参考:
PS:才发现下面的测试中用到的
PersistentManager 官网上说是未充分测试的。
而且在 ${CATALINA_HOME}/conf/context.xml 中也发现 了以下代码:
- <!-- Uncomment this to disable session persistence across Tomcat restarts -->
- <!--
-
<Manager pathname="" />
- -->
因此,这一配置也使用于 YourWebApp/META-INF/context.xml 文件。
--------------------------------------------------------------------
Tomcat 默认是会在一个 application 停止的时候,将其所有的session都序列化到文件中,然后在下次启动的时候,在反序列化,继续尚未过期的session的。
但是,如果不想让session序列化到文件中,该如何做?
答案:
创建 yourWebApp/META-INF/context.xml ,内容如下:(补充:META-INF 目录应该和WEB-INF目录平级)
- <?xml version="1.0" encoding="UTF-8"?>
-
<Context>
-
<Manager className="org.apache.catalina.session.PersistentManager" saveOnRestart="false">
-
<Store className="org.apache.catalina.session.FileStore" />
-
</Manager>
-
</Context>
测试工程:
[TomcatSession序列化到文件]me.war.zip 以下是测试步骤:
Step 01. 将 me.war 部署
Step 02. 删除 me/META-INF/context.xml
Step 03. 删除 ${CATALINA_HOME}//conf/Catalina/localhost/me.xml (如果有的话)
Step 04. 启动Tomcat。
Step 05. 在浏览器中访问 ,并点击“submit”按钮,看到页面如下所示:(之后,请勿关闭浏览器窗口)
cur session = [org.apache.catalina.session.StandardSessionFacade@29c204], session id = [
1924B08CC930438F6AB4AFF79169A356]
cur user = [zhang3]
Step 06. 查看 ${CATALINA_HOME}/work/Catalina/localhost/me, 发现其下没有 SESSIONS.ser 文件
Step 07. 停止 tomcat
Step 08. 查看 ${CATALINA_HOME}/work/Catalina/localhost/me, 发现其下SESSIONS.ser 已被生成。
Step 09. 在原浏览器窗口中点击“refresh”链接进行刷新,提示无法连接。
Step 10. 重新启动Tomcat
Step 11. 查看 ${CATALINA_HOME}/work/Catalina/localhost/me, 发现生成的SESSIONS.ser已经不存在。
Step 12. 在原浏览器窗口中点击工具栏的“刷新”按钮进行刷新,看到页面如下所示:
cur session = [org.apache.catalina.session.StandardSessionFacade@de1b8a], session id = [
1924B08CC930438F6AB4AFF79169A356]
cur user = [zhang3]
说明,经过重启,会话已经得以恢复。
之后,将已经部署的工程 me 删除,然后重新部署,重复执行上述步骤(注意:此次跳过Step 02和Step 03),
在 Step 08 时会发现 SESSIONS.ser 没有生成,
在 Step 12 时发现 页面内容如下:
cur session = [org.apache.catalina.session.StandardSessionFacade@13c0b53], session id = [
1A3860739300E7A982D5AB20DB83D4C9]
cur user = [null]
阅读(1623) | 评论(0) | 转发(0) |