我正在使用java mail api 1.4.1来获取新的电子邮件。正在使用两个类来获取电子邮件然后解析它。 “GetMail”类与邮件服务器(Gmail,yahoo等)通信并获取邮件对象。然后将消息对象传递给另一个类“MailFormatter”类,然后解析消息对象,获取电子邮件标题(From,To,Subject等),然后解析Multipart内容以获取主体和附件。 “邮件获取”和“邮件格式化”过程都是非常耗费资源的,这些类将作为单独的Web应用程序实现。此应用程序将监视大量电子邮件ID的新电子邮件。如果这些(“GetMail”和“MailFormatter” “)作为单独的Web应用程序实现,如何将消息对象从”GetMail“应用程序传递到”MailFormatter“应用程序?有没有办法可以将获取的消息对象保存在某个位置(“GetMail”和“MailFormatter”应用程序共有的位置),以便“GetMail”可以将消息对象保留在该位置,并且然后“MailFormatter”应用程序可以从该位置读取“消息”对象并执行解析过程。消息对象无法序列化。如果无法序列化我怎样才能坚持java邮件消息对象的状态?请帮我解决这个问题。
答案 0 :(得分:1)
MimeMessage可以使用writeTo(OutputStream)序列化,并使用构造函数MimeMessage(Session,InputStream)进行反序列化。
因此,可以将消息从一个Web应用程序发送到另一个。
答案 1 :(得分:0)
我意识到我没有回答你的问题(!),但我想知道你是否正在解决正确的问题。解析是如此耗时,以至于需要拆分成不同的进程。您是否尝试过通过一个线程收集消息,并通过另一个线程异步解析它们?我怀疑这比执行某种形式的IPC更简单。
如果你做想要序列化非Serializable
的对象,请查看XStream,它将大部分内容与XML串行化。