Chinaunix首页 | 论坛 | 博客
  • 博客访问: 530245
  • 博文数量: 135
  • 博客积分: 3568
  • 博客等级: 中校
  • 技术积分: 1942
  • 用 户 组: 普通用户
  • 注册时间: 2006-10-19 17:52
文章分类

全部博文(135)

文章存档

2012年(29)

2011年(41)

2010年(26)

2009年(12)

2008年(9)

2007年(12)

2006年(6)

分类: Java

2011-06-20 16:52:24

参考:



PS:才发现下面的测试中用到的PersistentManager 官网上说是未充分测试的。
而且在 ${CATALINA_HOME}/conf/context.xml 中也发现 了以下代码:
  1. <!-- Uncomment this to disable session persistence across Tomcat restarts -->
  2. <!--
  3.     <Manager pathname="" />
  4.   -->
 因此,这一配置也使用于 YourWebApp/META-INF/context.xml 文件。





--------------------------------------------------------------------
Tomcat 默认是会在一个 application 停止的时候,将其所有的session都序列化到文件中,然后在下次启动的时候,在反序列化,继续尚未过期的session的。

但是,如果不想让session序列化到文件中,该如何做?
答案:
   创建 yourWebApp/META-INF/context.xml ,内容如下:(补充:META-INF 目录应该和WEB-INF目录平级)
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <Context>
  3.   <Manager className="org.apache.catalina.session.PersistentManager" saveOnRestart="false">
  4.     <Store className="org.apache.catalina.session.FileStore" />
  5.   </Manager>
  6. </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) |
给主人留下些什么吧!~~