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 <e...@apache.org> > 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<e...@apache.org> >> >> 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<e...@apache.org> >>>> >>>> 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<e...@apache.org> >>>>>> >>>>>> 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: server-dev-unsubscr...@james.apache.org >>>>>>> For additional commands, e-mail: server-dev-h...@james.apache.org >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> --------------------------------------------------------------------- >>>>>>> >>>>>> To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org >>>>> For additional commands, e-mail: server-dev-h...@james.apache.org >>>>> >>>>> >>>>> >>>>> --------------------------------------------------------------------- >>> To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org >>> For additional commands, e-mail: server-dev-h...@james.apache.org >>> >>> >>> > > --------------------------------------------------------------------- > To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org > For additional commands, e-mail: server-dev-h...@james.apache.org > >