Of course, I give you some details if you are interested.

The stand alone app needs only 6 beans :
mailboxManager which needs authenticator and sessionMapperFactory which
needs entityManagerFactory which needs datasource and vendorAdapter.
which are loaded with ApplicationContext constructor...(and I get them by
context.getbean method)

My web app is a BaseDS app, which loads beans with a dispatcherServlet.xml
file, and then injects them with annotation (like @Resource or @Autowired).
As I load the authenticator bean, the builder throw an exception asking for
a localusersrepository bean and then another bean...
I then make my own simple authenticator which does not need a usersRepos
(this Auth is always answering yes:). But I don't understand why in my
standalone app I don't need this...

Second issue, and much bigger, once my authenticator, datasource,
vendorAdapter instanced, the entityManagerFactory throw me some persistence
issues...
First I am told that the xml schema of META-INF/persistence.xml (that I've
imported in my web-app project) is not correct. And I got this first stack
trace, which means, I think, "you have to use version 1.0 of persistence"
after that I change the version to 1.0 in persistence.xml and I got a second
trace about a ValidationMode method.
The first trace :
org.springframework.beans.factory.BeanCreationException: Error creating bean
with name 'entityManagerFactory' defined in ServletContext resource
[/WEB-INF/dispatcherServlet-servlet.xml]: Invocation of init method failed;
nested exception is java.lang.IllegalArgumentException: Invalid XML in
persistence unit from URL
[file:/C:/WSRFLX/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/kiengiRecup-server/WEB-INF/classes/META-INF/persistence.xml]

I skip the trace which are not useful I think... and then, the XML traces...

Caused by: java.lang.IllegalArgumentException: Invalid XML in persistence
unit from URL
[file:/C:/WSRFLX/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/kiengiRecup-server/WEB-INF/classes/META-INF/persistence.xml]
at
org.springframework.orm.jpa.persistenceunit.PersistenceUnitReader.readPersistenceUnitInfos(PersistenceUnitReader.java:150)
at
org.springframework.orm.jpa.persistenceunit.DefaultPersistenceUnitManager.readPersistenceUnitInfos(DefaultPersistenceUnitManager.java:303)
at
org.springframework.orm.jpa.persistenceunit.DefaultPersistenceUnitManager.preparePersistenceUnitInfos(DefaultPersistenceUnitManager.java:275)
at
org.springframework.orm.jpa.persistenceunit.DefaultPersistenceUnitManager.afterPropertiesSet(DefaultPersistenceUnitManager.java:260)
at
org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:192)
at
org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:288)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1460)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1398)
... 32 more
Caused by: org.xml.sax.SAXParseException: cvc-complex-type.3.1: Value '2.0'
of attribute 'version' of element 'persistence' is not valid with respect to
the corresponding attribute use. Attribute 'version' has a fixed value of
'1.0'.
at
com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:195)
at
com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(ErrorHandlerWrapper.java:131)
at
com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:384)
at
com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:318)
at
com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator$XSIErrorReporter.reportError(XMLSchemaValidator.java:417)
at
com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.reportSchemaError(XMLSchemaValidator.java:3181)
at
com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.processOneAttribute(XMLSchemaValidator.java:2801)
at
com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.processAttributes(XMLSchemaValidator.java:2713)
at
com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.handleStartElement(XMLSchemaValidator.java:2065)
at
com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.startElement(XMLSchemaValidator.java:705)
at
com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:400)
at
com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl$NSContentDriver.scanRootElementHook(XMLNSDocumentScannerImpl.java:626)
at
com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:3103)
at
com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:922)
at
com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:648)
at
com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:140)
at
com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:511)
at
com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:808)
at
com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
at
com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:119)
at
com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:235)
at
com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:284)
at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:124)
at
org.springframework.orm.jpa.persistenceunit.PersistenceUnitReader.validateResource(PersistenceUnitReader.java:186)
at
org.springframework.orm.jpa.persistenceunit.PersistenceUnitReader.readPersistenceUnitInfos(PersistenceUnitReader.java:137)
... 39 more

The second trace :
org.springframework.beans.factory.BeanCreationException: Error creating bean
with name 'entityManagerFactory' defined in ServletContext resource
[/WEB-INF/dispatcherServlet-servlet.xml]: Invocation of init method failed;
nested exception is java.lang.AbstractMethodError:
org.springframework.orm.jpa.persistenceunit.SpringPersistenceUnitInfo.getValidationMode()Ljavax/persistence/ValidationMode;

I skip the trace which are not useful I think... and then, the persistence
traces...

Caused by: java.lang.AbstractMethodError:
org.springframework.orm.jpa.persistenceunit.SpringPersistenceUnitInfo.getValidationMode()Ljavax/persistence/ValidationMode;
at
org.apache.openjpa.persistence.PersistenceUnitInfoImpl.toOpenJPAProperties(PersistenceUnitInfoImpl.java:457)
at
org.apache.openjpa.persistence.PersistenceProductDerivation.load(PersistenceProductDerivation.java:314)
at
org.apache.openjpa.persistence.PersistenceProviderImpl.createContainerEntityManagerFactory(PersistenceProviderImpl.java:161)
at
org.apache.openjpa.persistence.PersistenceProviderImpl.createContainerEntityManagerFactory(PersistenceProviderImpl.java:65)
at
org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:225)
at
org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:288)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1460)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1398)
... 32 more
28 janv. 2011 12:30:24 org.apache.catalina.core.StandardContext
loadOnStartup
GRAVE: La servlet  a généré une exception "load()"
java.lang.AbstractMethodError:
org.springframework.orm.jpa.persistenceunit.SpringPersistenceUnitInfo.getValidationMode()Ljavax/persistence/ValidationMode;
at
org.apache.openjpa.persistence.PersistenceUnitInfoImpl.toOpenJPAProperties(PersistenceUnitInfoImpl.java:457)
at
org.apache.openjpa.persistence.PersistenceProductDerivation.load(PersistenceProductDerivation.java:314)
at
org.apache.openjpa.persistence.PersistenceProviderImpl.createContainerEntityManagerFactory(PersistenceProviderImpl.java:161)
at
org.apache.openjpa.persistence.PersistenceProviderImpl.createContainerEntityManagerFactory(PersistenceProviderImpl.java:65)
at
org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:225)
at
org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:288)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1460)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1398)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:512)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:450)
at
org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:290)
at
org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
at
org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:287)
at
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:189)
at
org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:540)
at
org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:842)
at
org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:416)
at
org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:443)
at
org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:459)
at
org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:340)
at
org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:307)
at
org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:127)
at javax.servlet.GenericServlet.init(GenericServlet.java:212)
at
org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1173)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:993)
at
org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4387)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4700)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:785)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)
at org.apache.catalina.core.StandardService.start(StandardService.java:525)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:701)
at org.apache.catalina.startup.Catalina.start(Catalina.java:585)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)

Thx.

2011/1/28 Norman Maurer <[email protected]>

> Could you give use some more details ? Like the stacktrace etc.
>
> Bye,
> Norman
>
>
> 2011/1/28 Luc Saulière <[email protected]>:
> > Hi James Dev Team,
> > Another question on this topic, in facts another step in my James based
> app
> > devlopment.
> > The mail storage in James DB (via jdbc mysql connector) works fine in
> stand
> > alone with only 6 beans (7 with the PlaceHolderConfigurer).
> > My issue takes place in a JavaEE/Spring app, when I tried to load my
> reduced
> > James spring context, the build behaviour is not the same as in stand
> alone
> > and it ask me much more beans for, actually trigger a class constructor
> > exception.
> > Anyone has a clue about James based webapp dev?
> >
> > Thx,
> > Luc.
> >
> > 2011/1/24 Eric Charles <[email protected]>
> >
> >> Hi Luc,
> >>
> >> Try to add in log4j.properties
> >> log4j.logger.com.kiengi.recup=INFO, CONS, FILE
> >>
> >> Tks,
> >>
> >> Eric
> >>
> >>
> >>
> >> On 24/01/2011 17:05, Luc Saulière wrote:
> >>
> >>> Hello,
> >>>
> >>> Now I load my java app, as a James side module, I would like to log
> some
> >>> informations for debug and information, like James :
> >>>
> >>> INFO  16:42:31,246 |
> >>> org.apache.james.container.spring.JamesServerApplicationContext |
> >>> Refreshing
> >>>
> org.apache.james.container.spring.JamesServerApplicationContext@27e59128:
> >>> startup date [Mon Jan 24 16:42:31 CET 2011]; root of context hierarchy
> >>>
> >>> INFO  16:42:31,859 |
> >>> org.apache.james.container.spring.JamesServerApplicationContext |
> Closing
> >>>
> org.apache.james.container.spring.JamesServerApplicationContext@27e59128:
> >>> startup date [Mon Jan 24 16:42:31 CET 2011]; root of context hierarchy
> >>>
> >>> I tried to make a log :
> >>>
> >>> Log log = LogFactory.getLog(Main.class.getName());
> >>>
> >>>
> >>> But I got :
> >>>
> >>> log4j:WARN No appenders could be found for logger
> >>> (com.kiengi.recup.POP.Main).
> >>>
> >>> log4j:WARN Please initialize the log4j system properly.
> >>>
> >>> So the only solution I have is :
> >>>
> >>> System.out.println("String to write to the console...");
> >>>
> >>> Which is a little bit archaic...
> >>>
> >>> So do you have any clue about how to log properly to the Java (or
> Eclipse)
> >>> console?
> >>>
> >>> Thx
> >>> Luc.
> >>>
> >>> 2011/1/21 Norman Maurer<[email protected]>
> >>>
> >>>  So you want to store a MimeMessage instance in the Mailbox ?
> >>>>
> >>>> You could use the MimeMessageInputStream class for this:
> >>>>
> >>>>
> >>>>
> >>>>
> http://svn.apache.org/viewvc/james/server/trunk/core/src/main/java/org/apache/james/core/MimeMessageInputStream.java?view=markup
> >>>>
> >>>> Bye,
> >>>> Norman
> >>>>
> >>>>
> >>>> 2011/1/21 Luc Saulière<[email protected]>:
> >>>>
> >>>>> It worked, that was a weird eclipse behaviour...
> >>>>> You are very helpful, may I bother you one more time? maybe the
> last...
> >>>>> maybe not :)
> >>>>>
> >>>>> Now I can easily store my messages in the db, ok, but the source of
> my
> >>>>> messages is an inputStream.
> >>>>> I don't know how to make an Inputstream from a mail message (as
> >>>>>
> >>>> javax.Mail,
> >>>>
> >>>>> MimeMessage or Message...) cause each try I made gave me a "bad
> header
> >>>>> message...".
> >>>>> I see in James code the MessageResultImpl class which looks like a
> >>>>>
> >>>> Message
> >>>>
> >>>>> def but with Content type instead of MimeMessage...
> >>>>> I will try to parse every ppty of the message and make a new
> >>>>>
> >>>> MessageResult
> >>>>
> >>>>> and find a way to extract the damned InputStream I need...
> >>>>>
> >>>>> Thx
> >>>>>
> >>>>>
> >>>>>
> >>>>> 2011/1/21 Norman Maurer<[email protected]>
> >>>>>
> >>>>>  Maybe some nice classpath problem with eclipse or something like
> >>>>>> that.. maybe just rename your beans config to something else and use
> >>>>>> it in the Main class. Just to be sure it not use the wrong one..
> >>>>>>
> >>>>>> Bye,
> >>>>>> Norman
> >>>>>>
> >>>>>>
> >>>>>> 2011/1/21 Luc Saulière<[email protected]>:
> >>>>>>
> >>>>>>> Thx, it works perfectly with only only 7 beans.
> >>>>>>> Just one weird thing, in my J3M2 project which worked perfectly
> >>>>>>>
> >>>>>> yesterday, I
> >>>>>>
> >>>>>>> have now a XmlBeanDefinitionStoreException, which specify the
> >>>>>>> spring-beans.xml line number 1770!!?!
> >>>>>>> weird, isn't it?
> >>>>>>>
> >>>>>>> 2011/1/20 Norman Maurer<[email protected]>
> >>>>>>>
> >>>>>>>  Hi there,
> >>>>>>>>
> >>>>>>>> exactly. In fact you will prolly only need to instance the needed
> >>>>>>>> MailboxManager/SubscriptionManager/Authenticator implementation
> you
> >>>>>>>> want to use in your code or just wire these implementations via
> >>>>>>>> spring. Everything else should not be needed.
> >>>>>>>>
> >>>>>>>> Bye,
> >>>>>>>> Norman
> >>>>>>>>
> >>>>>>>>
> >>>>>>>> 2011/1/20 Luc Saulière<[email protected]>:
> >>>>>>>>
> >>>>>>>>> Ok it works, I didnt know how to inject beans in my main class...
> >>>>>>>>> It loads all the james app before sending one mail to the bdd,
> but
> >>>>>>>>>
> >>>>>>>> it
> >>>>
> >>>>> works
> >>>>>>>>
> >>>>>>>>> :) In fact I hacked all the spring-bean.xml (from J3M2) without
> >>>>>>>>>
> >>>>>>>> deleting
> >>>>>>
> >>>>>>> any
> >>>>>>>>
> >>>>>>>>> bean... I just have to select those I need.
> >>>>>>>>>
> >>>>>>>>> Thanks for your help,
> >>>>>>>>> Luc
> >>>>>>>>>
> >>>>>>>>> 2011/1/20 Eric Charles<[email protected]>
> >>>>>>>>>
> >>>>>>>>>  Hi,
> >>>>>>>>>>
> >>>>>>>>>> Yes, direct injection does not work in main class because it is
> >>>>>>>>>>
> >>>>>>>>> not
> >>>>
> >>>>> fetched
> >>>>>>>>
> >>>>>>>>> from spring context.
> >>>>>>>>>>
> >>>>>>>>>> 1. you can create a bean and move the @Resource within, define
> the
> >>>>>>>>>>
> >>>>>>>>> bean
> >>>>>>
> >>>>>>> in
> >>>>>>>>
> >>>>>>>>> spring xml context, spring should inject the mailboxmanager in
> >>>>>>>>>>
> >>>>>>>>> your
> >>>>
> >>>>> bean.
> >>>>>>>>
> >>>>>>>>> You can get your bean with context.getBean("mybean") in main
> >>>>>>>>>>
> >>>>>>>>> class.
> >>>>
> >>>>> 2. or simply call from the main class
> >>>>>>>>>>
> >>>>>>>>> context.getBean("mailboxmanager"),
> >>>>>>
> >>>>>>> it
> >>>>>>>>
> >>>>>>>>> should give you the mailboxmanager,... but it seems you had an
> >>>>>>>>>>
> >>>>>>>>> exception
> >>>>>>
> >>>>>>> (if
> >>>>>>>>
> >>>>>>>>> such, could you provide the stack trace ?).
> >>>>>>>>>>
> >>>>>>>>>> Tks,
> >>>>>>>>>>
> >>>>>>>>>> Eric
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>> On 20/01/2011 15:42, Luc Saulière wrote:
> >>>>>>>>>>
> >>>>>>>>>>  Hello Eric,
> >>>>>>>>>>> That was quite the code I tested yesterday, but I got still the
> >>>>>>>>>>>
> >>>>>>>>>> same
> >>>>
> >>>>> exception, because the MailboxManager is not initialized (null
> >>>>>>>>>>>
> >>>>>>>>>> pointer
> >>>>>>
> >>>>>>> exception).
> >>>>>>>>>>> I tried the @Resource annotation, I got 'null pointer' and I
> >>>>>>>>>>>
> >>>>>>>>>> tried
> >>>>
> >>>>> the
> >>>>>>
> >>>>>>> BeanFactory way but I got a 'bean creation exception'...
> >>>>>>>>>>> I think the first method is the good one, but I'm still looking
> >>>>>>>>>>>
> >>>>>>>>>> after
> >>>>>>
> >>>>>>> the
> >>>>>>>>
> >>>>>>>>> magic method to instantiate my MailboxManager.
> >>>>>>>>>>>
> >>>>>>>>>>> Thx,
> >>>>>>>>>>> Luc.
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>> 2011/1/20 Eric Charles<[email protected]>
> >>>>>>>>>>>
> >>>>>>>>>>>  Hi,
> >>>>>>>>>>>
> >>>>>>>>>>>> Probably you did not instantiate spring context.
> >>>>>>>>>>>>
> >>>>>>>>>>>> As first shot, you could copy Main to YourMain
> >>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>
> https://svn.apache.org/repos/asf/james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/Main.java
> >>>>
> >>>>> and hack it with for example with code sample in [1].
> >>>>>>>>>>>>
> >>>>>>>>>>>> You can also hack the spring context xml files if you don't
> want
> >>>>>>>>>>>>
> >>>>>>>>>>> to
> >>>>
> >>>>> load
> >>>>>>>>
> >>>>>>>>> all the beans, but you will still need a few of them to access
> >>>>>>>>>>>>
> >>>>>>>>>>> the
> >>>>
> >>>>> mailbox.
> >>>>>>>>>>>>
> >>>>>>>>>>>> Obviously, we could discuss the following:
> >>>>>>>>>>>> 1. Add some code simple samples for basic operations on
> mailbox.
> >>>>>>>>>>>> 2. Have a spring context for mailbox that could be used as a
> >>>>>>>>>>>>
> >>>>>>>>>>> stand-alone
> >>>>>>>>
> >>>>>>>>> (and also be imported in server).
> >>>>>>>>>>>>
> >>>>>>>>>>>> Tks,
> >>>>>>>>>>>>
> >>>>>>>>>>>> Eric
> >>>>>>>>>>>>
> >>>>>>>>>>>> [1] code sample (non compiling).
> >>>>>>>>>>>>
> >>>>>>>>>>>> public class YourMain {
> >>>>>>>>>>>>
> >>>>>>>>>>>>    private static Log log =
> >>>>>>>>>>>>
> >>>>>>>>>>> LogFactory.getLog(Main.class.getName());
> >>>>>>
> >>>>>>>    @Ressource(name="mailboxmanager")
> >>>>>>>>>>>>    private static MailboxManager;
> >>>>>>>>>>>>
> >>>>>>>>>>>>    public static void main(String[] args) throws IOException {
> >>>>>>>>>>>>
> >>>>>>>>>>>>        final JamesServerApplicationContext context = new
> >>>>>>>>>>>> JamesServerApplicationContext(new String[] {
> >>>>>>>>>>>> "context/james-server-context.xml" });
> >>>>>>>>>>>>        context.registerShutdownHook();
> >>>>>>>>>>>>
> >>>>>>>>>>>>        // Bad code practice - Refactor it!!!
> >>>>>>>>>>>>
> >>>>>>>>>>>>        MailboxPath mailboxPath =
> MailboxPath.inbox("userName");
> >>>>>>>>>>>>
> >>>>>>>>>>>>        MailboxSession mailboxSession =
> >>>>>>>>>>>> mailboxManager.createSystemSession(userName30, log)
> >>>>>>>>>>>>        mailboxManager.startProcessingRequest(mailboxSession);
> >>>>>>>>>>>>        try {
> >>>>>>>>>>>>                mailboxManager.createMailbox(mailboxPath,
> >>>>>>>>>>>>
> >>>>>>>>>>> mailboxSession);
> >>>>>>>>
> >>>>>>>>>        }
> >>>>>>>>>>>>        catch (MailboxExistsException e) {
> >>>>>>>>>>>>                // Do nothing, the mailbox already exists.
> >>>>>>>>>>>>        }
> >>>>>>>>>>>>
> >>>>>>>>>>>>        mailboxManager.endProcessingRequest(mailboxSession);
> >>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>>        MessageManager messageManager =
> >>>>>>>>>>>> mailboxManager.getMailbox("mailboxPath", mailboxSession);
> >>>>>>>>>>>>
> >>>>>>>>>>>>       // instanciate an input stream that contains your email
> >>>>>>>>>>>>
> >>>>>>>>>>> content
> >>>>>>
> >>>>>>> (body, header,...)
> >>>>>>>>>>>>
> >>>>>>>>>>>>        messageManager.appendMessage(your-input-stream,
> >>>>>>>>>>>>                       new Date(),
> >>>>>>>>>>>>                       mailboxSession,
> >>>>>>>>>>>>                       isRecent,
> >>>>>>>>>>>>                       flags);
> >>>>>>>>>>>>
> >>>>>>>>>>>>  mailboxManager.endProcessingRequest(mailboxSession);
> >>>>
> >>>>>           }
> >>>>>>>>>>>>
> >>>>>>>>>>>>    }
> >>>>>>>>>>>>
> >>>>>>>>>>>> }
> >>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>> On 19/01/2011 20:07, Luc Saulière wrote:
> >>>>>>>>>>>>
> >>>>>>>>>>>>  Thx for answering so quickly, I tried this in a new package
> >>>>>>>>>>>>
> >>>>>>>>>>> inside
> >>>>
> >>>>> james-server-container-spring project...
> >>>>>>>>>>>>> I have a public static void main(String[] args) containing my
> >>>>>>>>>>>>>
> >>>>>>>>>>>> private
> >>>>>>
> >>>>>>> staticMailboxManager mailboxManager which
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> is injected with the annotation
> >>>>>>>>>>>>>
> >>>>>>>>>>>> @Resource(name="mailboxmanager")
> >>>>
> >>>>> from
> >>>>>>
> >>>>>>> the
> >>>>>>>>>>>>> spring-bean.xml.
> >>>>>>>>>>>>> But it does not succeed in initializing the variable and I
> get
> >>>>>>>>>>>>>
> >>>>>>>>>>>> a
> >>>>
> >>>>> NullPointerException as soon as I use it...
> >>>>>>>>>>>>> How can I initialize my beans without running the entire
> James
> >>>>>>>>>>>>>
> >>>>>>>>>>>> app?
> >>>>>>
> >>>>>>> Tks.
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> 2011/1/19 Eric Charles<[email protected]>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>  Hi Luc,
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>  Yes, code has changed in trunk since M2 (we don't use
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>> MailServer
> >>>>
> >>>>> anymore).
> >>>>>>>>>>>>>> In M2, or in trunk, the way to store mail is the same.
> >>>>>>>>>>>>>> If you are deploying the your code/class in the james spring
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>> container,
> >>>>>>>>
> >>>>>>>>> you
> >>>>>>>>>>>>>> need to inject the mailboxmanager (with
> >>>>>>>>>>>>>> @Resources(name="mailboxmanager")
> >>>>>>>>>>>>>> and have a block of code such as:
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>> MailboxPath mailboxPath = MailboxPath.inbox(userName30);
> >>>>>>>>>>>>>> MailboxSession mailboxSession =
> >>>>>>>>>>>>>> mailboxManager.createSystemSession(userName30, log)
> >>>>>>>>>>>>>> MessageManager messageManager =
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>> mailboxManager.getMailbox(mailboxPath,
> >>>>>>>>
> >>>>>>>>> mailboxSession);
> >>>>>>>>>>>>>> messageManager.appendMessage(your-input-stream,
> >>>>>>>>>>>>>>                        new Date(),
> >>>>>>>>>>>>>>                        mailboxSession,
> >>>>>>>>>>>>>>                        isRecent,
> >>>>>>>>>>>>>>                        flags);
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>>   mailboxManager.endProcessingRequest(mailboxSession);
> >>>>>>
> >>>>>>>            }
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>> I just realize I can't find a simple test case to in trunk
> to
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>> show
> >>>>>>
> >>>>>>> this
> >>>>>>>>
> >>>>>>>>> (or
> >>>>>>>>>>>>>> maybe I didn't look good).
> >>>>>>>>>>>>>> If we don't have this, maybe you could open a jira so we can
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>> further
> >>>>>>
> >>>>>>> provide test samples.
> >>>>>>>>>>>>>> (this comes from  the fact that all our tests were made from
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>> an
> >>>>
> >>>>> "imap
> >>>>>>>>
> >>>>>>>>> perspective", we moved the imap test to another  project, but
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>> we
> >>>>
> >>>>> probably
> >>>>>>>>>>>>>> should further enrich the pure mailbox test cases/samples).
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>> Tks,
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>> Eric
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>> On 19/01/2011 18:04, Luc Sauličre wrote:
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>>  Hello,
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>>  I'm developing with Math on the same mail app. We didn't
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>> succeed
> >>>>
> >>>>> in
> >>>>>>
> >>>>>>> storing
> >>>>>>>>>>>>>>> mail as james3 does. In fact the SieveMailet class does not
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>> have
> >>>>
> >>>>> a
> >>>>>>
> >>>>>>> setUsersRepo method, I think you're dealing with a newer
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>> version
> >>>>
> >>>>> of
> >>>>>>
> >>>>>>> James3...
> >>>>>>>>>>>>>>> We are developing with the M2 one and SieveMailet have a
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>> setMailserver
> >>>>>>>>
> >>>>>>>>> method instead.
> >>>>>>>>>>>>>>> So, is there any way to store a mail (from another IMAP
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>> connection
> >>>>>>
> >>>>>>> for
> >>>>>>>>
> >>>>>>>>> instance) in the James3 mySQL db, as James3 does (i.e.
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>> filling
> >>>>
> >>>>> correctly
> >>>>>>>>>>>>>>> all
> >>>>>>>>>>>>>>> the appropriate tables...)?
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> Thx for helping.
> >>>>>>>>>>>>>>> Luc.
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> 2011/1/17 Eric Charles<[email protected]>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>  Hi,
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>  The mails store magic occurs in LocalDelivery where the
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>> MailboxManager
> >>>>>>>>>>>>>>>> is
> >>>>>>>>>>>>>>>> injected.
> >>>>>>>>>>>>>>>> (more precise, LocalDelivery uses the SieveMailet
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> initialized
> >>>>
> >>>>> with
> >>>>>>
> >>>>>>> the
> >>>>>>>>>>>>>>>> MailboxManager)
> >>>>>>>>>>>>>>>>        sieveMailet.setUsersRepository(usersRepository);
> >>>>>>>>>>>>>>>>        sieveMailet.setMailboxManager(mailboxManager);
> >>>>>>>>>>>>>>>>        sieveMailet.init(m);
> >>>>>>>>>>>>>>>>        sieveMailet.setQuiet(true);
> >>>>>>>>>>>>>>>> ...
> >>>>>>>>>>>>>>>>        if (mail.getState() != Mail.GHOST) {
> >>>>>>>>>>>>>>>>            sieveMailet.service(mail);
> >>>>>>>>>>>>>>>>        }
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>> You only need to know that *MailRepository is not for
> users'
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> mail
> >>>>>>
> >>>>>>> storage
> >>>>>>>>>>>>>>>> http://james.apache.org/server/3/feature-persistence.html
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>> Both topics (mailet usage for delivery + separate mail
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> stores)
> >>>>
> >>>>> are
> >>>>>>
> >>>>>>> subject
> >>>>>>>>>>>>>>>> to discussion will certainly change.
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>> Tks,
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>> Eric
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>> On 17/01/2011 11:43, math math wrote:
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>  Hello everybody,
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>  I am developping a web mail project using james 3M2. I'm
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> trying
> >>>>>>
> >>>>>>> to
> >>>>>>>>
> >>>>>>>>> store
> >>>>>>>>>>>>>>>>> mails in a "james3" way with an external application
> using
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>> MySql
> >>>>>>
> >>>>>>> DB.
> >>>>>>>>
> >>>>>>>>> I've
> >>>>>>>>>>>>>>>>> tried to store mails using mysq database repositories for
> a
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>> few
> >>>>>>
> >>>>>>> days
> >>>>>>>>
> >>>>>>>>> now
> >>>>>>>>>>>>>>>>> but
> >>>>>>>>>>>>>>>>> i didn't succeed to do so... I 've traced the store
> method
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>> of
> >>>>
> >>>>> JDBCMailRepository class and also the ToRepository one. But
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>> still
> >>>>>>
> >>>>>>> don't
> >>>>>>>>>>>>>>>>> know
> >>>>>>>>>>>>>>>>> how James 3 is storing mails in the DB.
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>> I would be very glad if someone could help me in this
> task.
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>> Thanks,
> >>>>>>>>>>>>>>>>> Mat
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>
>  ---------------------------------------------------------------------
> >>>>
> >>>>>  To unsubscribe, e-mail:
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>> [email protected]
> >>>>>>
> >>>>>>> For additional commands, e-mail:
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> [email protected]
> >>>>>>
> >>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
>  ---------------------------------------------------------------------
> >>>>
> >>>>> To unsubscribe, e-mail:
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>> [email protected]
> >>>>
> >>>>> For additional commands, e-mail:
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>> [email protected]
> >>>>>>
> >>>>>>>
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>>
>  ---------------------------------------------------------------------
> >>>>
> >>>>> To unsubscribe, e-mail: [email protected]
> >>>>>>>>>>>> For additional commands, e-mail:
> >>>>>>>>>>>>
> >>>>>>>>>>> [email protected]
> >>>>
> >>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>
> ---------------------------------------------------------------------
> >>>>
> >>>>> To unsubscribe, e-mail: [email protected]
> >>>>>>>>>> For additional commands, e-mail:
> [email protected]
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> ---------------------------------------------------------------------
> >>>>>>>> To unsubscribe, e-mail: [email protected]
> >>>>>>>> For additional commands, e-mail: [email protected]
> >>>>>>>>
> >>>>>>>>
> >>>>>>>>
> ---------------------------------------------------------------------
> >>>>>> To unsubscribe, e-mail: [email protected]
> >>>>>> For additional commands, e-mail: [email protected]
> >>>>>>
> >>>>>>
> >>>>>>
>  ---------------------------------------------------------------------
> >>>> To unsubscribe, e-mail: [email protected]
> >>>> For additional commands, e-mail: [email protected]
> >>>>
> >>>>
> >>>>
> >>
> >> ---------------------------------------------------------------------
> >> To unsubscribe, e-mail: [email protected]
> >> For additional commands, e-mail: [email protected]
> >>
> >>
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>
>

Reply via email to