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]
