我们最近实现了基于弹簧安全表单的登录。在重新启动服务器期间,现有会话将失效,并且当服务器再次启动时,应用程序将失败。
有没有办法在开箱即用的 tomcat 中实现会话持久性。我已经在上下文中注释掉了<Manager pathname="" />
.xml但仍然没有保留会话。
实现中的任何指针都将非常有帮助。
这就是它所需要的一切,只要你优雅地重新启动它(例如shutdown
并startup
./bin
(中的脚本,并让Tomcat有机会将会话序列化到磁盘
默认上下文.xml
<Context>
<!-- Default set of monitored resources. If one of these changes, the -->
<!-- web application will be reloaded. -->
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<WatchedResource>${catalina.base}/conf/web.xml</WatchedResource>
<!-- Uncomment this to disable session persistence across Tomcat restarts -->
<!--
<Manager pathname="" />
-->
</Context>
试试这个:
- 启动雄猫,登录到您的应用程序以创建会话。
- 停止雄猫
- 浏览到
{Apache Tomcat}/work/Catalina/localhost/ROOT
,您应该找到SESSIONS.ser文件,其中包含写入磁盘的序列化会话。
如果您没有看到该文件,则其他内容正在进行中。 如果可能,请分享其他详细信息。
会话中的所有内容是否都实现了可序列化?
从文档中:
为了成功恢复会话属性的状态,所有 此类属性必须实现
java.io.Serializable
接口。
如果这是问题所在,通常 Tomcat 日志中会显示一条错误消息。