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] > >
