2009-06-30 97 views
0

我需要在两个Web应用程序(A和B)之间共享Java邮件消息对象。在Web应用程序之间共享消息对象

WebApplication的A获得的消息,并将其写入到的OutputStream

for(int i=0;i<messagesArr.length;i++){ 
    uid = pop3FolderObj.getUID(messagesArr[i]); 
//storing messages with uid names inorder to maintain uniqueness 
    File f = new File("F:/PersistedMessagesFolder" + uid); 
    FileOutputStream fos = new FileOutputStream(f); 
    messagesArr[i].writeTo(fos); 
    fos.flush(); 
    fos.close(); 
} 

是FileOutputStream中以用于存留消息对象的最佳输出流?是否可以使用ObjectOutputStream进行消息对象持久化?

的WebApplication b。通过为InputStream

FileInputStream fis = new FileInputStream("F:/MessagesPersistedFolder"+uid); 
MimeMessage mm = new MimeMessage(sessionObj,fis); 

读取消息对象如果它是通过一个WebApplication的已经写好的邮件对象不是一个MimeMessage?如何使用输入流读取非MIME消息?

MimeMessage构造函数要求sessionObj作为第一个参数?我如何在WebApplicationB中获得这个sessionObj?我是否必须再次通过电子邮件服务器建立与同一个emailid,emailpassword,popserver和端口(已在WebApplication A中使用)的商店连接才能获得此会话对象?即使获得,该会话对象是否仍然与先前在WebApplicationA中获得的会话对象的会话对象相同?

由于我使用uids来命名Message对象(为了保持文件名的唯一性),我怎样才能在WebApplication A和WebApplication B之间共享这些uid? WebApplication B需要uid来访问“F:/ MessagesPersistedFolder”中的特定文件。

请帮我解决上述问题。

+0

我觉得有这“问题” – 2009-06-30 08:22:30

回答

1

你试图在这里实现的实际功能是什么?这听起来像是你试图在一个圆洞(在两个应用程序之间共享消息数据的要求)中适配一个平方桩(Javamail消息类)。

我的建议是,要么:

1)使用消息队列和使用javax.jms.TextMessage从一个应用程序发送的电子邮件中的内容到其他。

2)或将邮件内容保存到共享数据库中的clob字段,这两个应用程序都可以访问该字段。

在一天结束时,请使用Javamail API发送电子邮件,而不是共享数据的方式。

而且使用系列化,这是你与java.io.ObjectOutputStream做什么会产生的文件,将只在JavaMail API的特定版本的工作,虽然我怀疑JAVAMAIL改变太多,这些天,我不会想排除可能性。

+0

我发展将从新emails.In Web应用程序的移动进行通信的电子邮件客户端的Web应用程序约4或5个独立的问题,有2个资源集中授课。 1.MailGetter(超过由用户提供的众多emailids迭代,并获得电子邮件的emailids)2. MailFormatter(删除将被发送给移动和与此类还批量下载附件的HTML标签解析多部分内容转换成简单的文本),所以我米试图实现MailGetter和MailFormatter为2的Web应用程序,这将是在不同的服务器上。所以,我需要共享这些应用程序之间的消息对象。 – jezhilvalan 2009-06-30 10:09:44

相关问题