我开发了一个基于 Java 的 Lotus Domino 电子邮件客户端应用程序。我将 lotus.domino.Session 对象保存在 httpsession.setAttribute 中用于会话管理。我们决定将应用程序部署在两个不同的服务器上并管理两者之间的负载平衡和会话复制。
现在我们在复制 lotus.domino.Session 时遇到问题,因为 lotus.domino.Session 没有序列化。
请帮助我
谢谢
我开发了一个基于 Java 的 Lotus Domino 电子邮件客户端应用程序。我将 lotus.domino.Session 对象保存在 httpsession.setAttribute 中用于会话管理。我们决定将应用程序部署在两个不同的服务器上并管理两者之间的负载平衡和会话复制。
现在我们在复制 lotus.domino.Session 时遇到问题,因为 lotus.domino.Session 没有序列化。
请帮助我
谢谢
AFAIK,你不走运。
Domino 对象(即 lotus.domino 包中的任何内容)存储指向 C API 对象的链接,该对象必须进行垃圾回收以避免内存泄漏。因此,如果 Domino 对象被序列化,它会在存储它的请求结束时变得有毒,因为它的 C 对象链接将在该请求结束时自动回收。
正如 Leyrer 所说,不可能序列化任何 Domino 对象,因为它有一个无法存储的 C-API 后端组件。
此外,Session 对象也从未设计用于连接池。因此,即使您跳过序列化,您也可能会遇到其他问题。
根据您要完成的任务,您可以只使用重新创建会话和任何其他对象所需的引用来创建自己的可序列化对象。