我保存到会话的对象是 a LocalizationContext
,它是不可序列化的,我的 Tomcat 是 5.5.28,而 qa 服务器是 Tomcat 5.5.30。这是来自Tomcat 文档:
每当 Catalina 正常关闭并重新启动时,或者当触发应用程序重新加载时,标准管理器实现将尝试将所有当前活动的会话序列化到通过路径名属性定位的磁盘文件。当应用程序重新加载完成时,所有这些保存的会话将被反序列化并激活(假设它们同时没有过期)。
为了成功恢复会话属性的状态,所有此类属性必须实现 java.io.Serializable 接口。
<distributable>
您可以通过在您的 Web 应用程序部署描述符 (/WEB-INF/web.xml) 中包含该元素来使 Manager 强制执行此限制 。
这让我认为它也应该在我的本地中断,并且你永远不能在 Tomcat 中保存会话属性,除非它实现Serializable
.
编辑:
对不起,更清楚地说,我的问题有两个。是否所有会话属性都必须是可序列化的,如果可以,为什么它仍然可以在我的本地环境中工作?