`

Tomcat5.5.12 实现Session持久化的配置

    博客分类:
  • JAVA
阅读更多

    至于Session的基本知识这里就不仔细描述,SessionWeb应用服务开发中广泛被应用,利用该内置对象可以传递(保存)用户数据(页面间的参数)等。

 

       应用Sessionweb程序要求客户端开放cookie,在jsp技术中如果客户端浏览器为了安全关闭cookie,那么可以采用页面重发的机制来解决客户端Session ID丢失的问题,从而保证程序的正确运行。

 

       在客户端每个用户的Session对象存在Servlet容器中,如果Tomcat服务器重起/当机的话该session就会丢失,而客户端的操作应为session的丢失而造成数据丢失,而且当前用户访问量巨大,每个用户的Session里存放大量的数据的话,那么就很占用服务器大量的内存,从而是服务器的性能受到影响。

 

       Tomcat里,系统提供Session的持久化策略。其中对session的存储提供两种办法,一个是本地文件存储,一个是数据库存储,本文详细介绍Tomcat5.5.12里对session的本地存储配置方法。

 

       笔者在调试时是在windowsXP sp2系统下进行,JDK1.5

 

       进入tomcat的配置文档目录/conf,可以看到context.xml文件,我们将在这里配置Session持久化,配置后将对所有的站点生效。

打开context.xml,在<Context>节点下添加如下<Manager>节点:

 

<Manager className="org.apache.catalina.session.PersistentManager" >

    debug=0;

    saveOnRestart="true"

    maxActiveSession="-1"

    minIdleSwap="-1"

    maxIdleSwap="-1"

    maxIdleBackup="-1"

    <Store className="org.apache.catalina.session.FileStore" directory="../session" />

</Manager>

 

<Manager>元素是专门用来配置Session的,该元素中的每个属性如下解释:

l         classNameSession的管理类,tomcat将会通过定义的接口来应用该类生成的对象。

l         debugSession管理器的跟踪级别。

l         saveOnRestart:(true/false)配置服务重启工程中对session的处理,若为true,则关闭前把有效的session保存,启动后重新载入。

l         maxActiveSession:活动状态Session的最大数,为-1时则不限制,否则Session Manager将会把超出的Session对象转移到Session Store中。

l         minIdleSwapSession不活动的最短时间,超过该时间,Session Manager 可能会把该Session对象转移到Session Store中,单位为秒。

l         maxidleSwapSession不活动的最长时间,超过该时间,Session Manager 将会把该Session对象转移到Session Store中,该Session将不在内存中。

l         maxidleBackup: Session不活动的最长时间,超过该时间,Session Manager 将会把该Session对象备份到Session Store中,但该Session对象依然存在内存中。

l         <Store>指定实现持久化的类和Session存放的文件位置,如该例子中指定的类是:org.apache.catalina.session.FileStore,而Session对象存放的目录则是tomcat根目录下的session文件夹(当然自己创建)

 

配置完后可以写一个简单的jsp页面,在页面上显示本次用户访问的Session ID,然后重起tomcat,再刷新该页面,可以看到该Session Id不变,而在/session目录下自动生成一个以session id为名,以“session”为扩展名的文件。该Session的持久化配置成功。

分享到:
评论
1 楼 xiaolongfeixiang 2009-12-31  


大哥,你的XML代码是不是有误呀?和网上的都不一样。就是:

    debug=0;

    saveOnRestart="true"

    maxActiveSession="-1"

    minIdleSwap="-1"

    maxIdleSwap="-1"

    maxIdleBackup="-1"

这些应该是<Manager>节点的属性,而不是其节点的值。还有,debug=0后,没有那个分号。


一点建议,仅供参看!!

相关推荐

Global site tag (gtag.js) - Google Analytics