Hello, How do you know that my compiler uses jpa 1.x? Because the only jpa library in my WebContent/WEB-INF/lib is the 2.0.1...
thx. 2011/1/28 Norman Maurer <[email protected]> > Hi there, > > from the trace it seems like you have a jpa 1.x provider on the > classpath. James use jpa 2.x, so you need to remove the 1.x one.. > > Hope it helps, > Norman > > 2011/1/28 Luc Saulière <[email protected]>: > > 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] > >> > >> > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [email protected] > For additional commands, e-mail: [email protected] > >
