我们有一个标准的 J2EE/Struts 内部 Web 应用程序,已在生产中使用多年。 我们将许多 Java 对象保存到 HttpSession 中,然后在一个请求到另一个请求时检索它们。它在大多数情况下都能工作(也许是 99.9%),但有时它会无缘无故地找不到我们在会话中保存的任何 Java 对象,因此我们的应用程序将崩溃。发生这种情况时,会话似乎丢失了。
我在IBM网站的这篇文章中找到了可能的解决方案:
https://www.ibm.com/docs/en/was/9.0.5?topic=sessions-configuring-database-session-persistence
我想知道我们需要对 Java 代码进行哪些更改才能使用这种方法,以便可以将会话对象保存到 WebSphere 数据库中,然后在发生会话丢失时检索。
如果有人可以提供一些示例代码,我将不胜感激。
我试图找出为什么 Java HttpSession 丢失会在 WebSphere 中偶尔发生,但到目前为止还没有成功,因为这种情况非常罕见。这就是为什么我正在考虑将会话对象保存到数据库中的方法。
使用会话持久性不需要更改应用程序,应用程序使用相同的 API 来访问 HTTPSession,无论它是如何持久/分布式的。