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

Reply via email to