gpt4 book ai didi

java - 在 Web 应用程序之间共享消息对象

转载 作者:行者123 更新时间:2023-12-01 16:11:29 24 4
gpt4 key购买 nike

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

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 A 写入的邮件消息对象不是 MimeMessage 怎么办?如何使用输入流读取非 mime 消息?

MimeMessage 构造函数强制将 sessionObj 作为第一个参数?如何在WebApplicationB中获取这个sessionObj?我是否必须再次与电子邮件服务器建立具有相同电子邮件 ID、电子邮件密码、POP 服务器和端口(已在 Web 应用程序 A 中使用)的存储连接才能获取此 session 对象?即使获取到了,这个session对象是否和之前在WebApplicationA中获取到的session对象一样?

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

请帮助我解决上述问题。

最佳答案

您在这里尝试实现的实际功能是什么?听起来您正试图将方钉(Javamail 消息类)装入圆孔(在两个应用程序之间共享消息数据的要求)。

我的建议是:

1) 使用消息队列,并使用 javax.jms.TextMessage 将电子邮件内容从一个应用程序发送到另一个应用程序。

2) 或将消息内容保存到两个应用程序都访问的共享数据库中的clob字段。

归根结底,使用 Javamail API 发送电子邮件而不是共享数据的手段。

还使用序列化,这就是您使用java.io.ObjectOutputStream所做的,将生成仅适用于特定版本的Javamail的文件API,虽然我怀疑 Javamail 如今是否发生了很大变化,但我不想排除这种可能性。

关于java - 在 Web 应用程序之间共享消息对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1062332/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com