2009-06-29 105 views
2

我使用java邮件api 1.4.1来获取新邮件。两个类正在用来获取电子邮件,然后解析它。 “GetMail”类与邮件服务器(Gmail,雅虎等)进行通信并获得消息对象。然后将消息对象传递给另一个类“MailFormatter”类,然后解析消息对象,获取电子邮件头(From,To,Subject等),然后解析Multipart内容以获取主体和附件。 “邮件获取”和“邮件格式化”过程都非常耗费资源,这些类将作为单独的Web应用程序来实现。此应用程序将监视多个电子邮件ID的新电子邮件。如果这些(“GetMail”和“MailFormatter “)被实现为独立的Web应用程序,我如何将消息对象从”GetMail“应用程序传递给”MailFormatter“应用程序?是否有一种方法可以将获取的消息对象保存在某个位置(“GetMail”和“MailFormatter”应用程序共有的位置),以便“GetMail”可以将消息对象保存在该位置,以及那么“MailFormatter”应用程序可以从该位置读取“消息”对象并执行解析过程。消息对象不能被序列化。如果他们不能被序列化我怎么能坚持java邮件消息对象的状态?请帮我解决这个问题。从应用程序之间传递java邮件消息对象

回答

1

MimeMessage可以用writeTo(OutputStream)序列化,并用构造函数MimeMessage(Session,InputStream)反序列化。

所以一条消息可以从一个webapp发送到另一个。

+0

感谢您的回答。所以我可以使用FileOutputStream并将对象保存为文件,然后通过MimeMessage构造函数读取它。 FileOutputStream是坚持消息的最佳方式吗?如果持久消息不是MimeMessage呢?如何通过输入流读取非MIME消息? MimeMessage构造函数也要求会话对象读取消息输入流。如何在其他Web应用程序中创建此会话对象? – jezhilvalan 2009-06-30 07:39:00

0

我意识到我没有回答你的问题(!),但我想知道你是否正在解决正确的问题。解析是如此费时,它需要分裂成不同的过程。你是否尝试过通过一个线程收集消息,并通过另一个线程异步解析它们?我怀疑这比执行某种形式的IPC更简单。

如果要连载不在Serializable对象,看看XStream,这将连载大多数事情从XML到/。

相关问题