日期:2014-05-18  浏览次数:20681 次

Tomcat中Session持久化的配置方法
用.net比较多,.net中session的持久化很容易配置,在jsp中一直向这么做,到网上查了半天资料,终于搞定了

Session持久化(2007-04-08)
Session持久化可以实现当tomcat重新启动后,当前IE使用的session仍然有效而不用重新登录,有两步需要做,session持久化很有用,尤其在eclipse中重新增加类后,tomcat重新加载后,IE页面不用再登录,之前的session依旧保持,调试的时候很有用
1.配置conf/server.xml
在server.xml的根路径或虚拟目录中增加一段,如虚拟目录调度所中:
<Context   path= "/dds "   docBase= "D:\01_XZY\98_供电局调度所\02_JSP\HRDGDZC\ROOT "   debug= "0 "   reloadable= "true "   >
<Manager   className= "org.apache.catalina.session.PersistentManager "   debug= "0 "   saveOnRestart= "true "   maxActiveSessions= "-1 "   minIdleSwap= "-1 "   maxIdleSwap= "-1 "   maxIdleBackup= "-1 "   >
<Store   className= "org.apache.catalina.session.FileStore "   directory= "seskep "/>
</Manager>
</Context>
这样之后,普通的session对象(像字符串类的)就能实现持久化了,但如果session使用了对象,则必须实现对象类的可序列化
参数说明:saveOnRestart-服务器关闭时,是否将所有的session保存到文件中;
maxActiveSessions-可处于活动状态的session数;
minIdleSwap/maxIdleSwap-session处于不活动状态最短/长时间(s),sesson对象转移到File   Store中;
maxIdleBackup-超过这一时间,将session备份。(-1表示没有限制)
directory= "seskep "     会在tomcat的work目录下建立一个目录,用来存储session,这里建立的目录是
D:\JAVA\TOMCAT4\work\Standalone\localhost\dds\seskep

2.类的序列化
如果session中存储了类xzy登录属性的实例,则类xzy登录属性必须能够序列化,才能实现session持久化
实现implements   java.io.Serializable接口就可以了
/**
  *   用户登录后各种属性记录在本类的实例中
  *   <p> Title:   </p>
  *   <p> Description:   </p>
  *   <p> Copyright:   Copyright   (c)   2004 </p>
  *   <p> Company:   山西泰森科技股份有限公司 </p>
  *   @author   邢志云
  *   @version   1.0
  */
public   class   xzy登录属性   implements   java.io.Serializable  
{
    public   String   UserName=null;
    public   String   姓名=null;
    public   String   单位=null;
    public   String   部门=null;
    public   String   职务=null;
    public   String   权限设置=null;
    static   final   public   long   serialVersionUID=372938;
}
serialVersionUID这个东西估计每个类中写个不同的数值就可以了,好像是版本保持的.
经过测试IE登录后页面后,Session再重新启动,刷新IE页面的时候session对象中的值能够像重启前一样的读出来.

------解决方案--------------------
文章不错,收藏了