Tomcat设置session的活化与钝化

什么是活化与钝化

当一个会话开始时,Servlet容器会为会话创建一个HttpSession对象。Servlet容器在某些情况下会把这些HttpSession对象从内存中转移到永久性存储设备中(钝化),并在需要访问HttpSession信息时再把它们加载到内存中(活化)

如果要钝化一个JavaBeen对象之类的,这个对象必须被实现Serializable接口。

上述过程被称为会话的持久化,持久化有两个好处:

  • 节约内存空间
  • 确保服务器重启或单个Web应用重启后,能够恢复重启前的会话。

以下情况会被持久化

  • 服务器或单个应用终止
  • 会话不活动时间到达限定值
  • 会话数目太多,到达了限定值

以下情况会被活化

  • 服务器或者是单个Web应用被重启
  • 客户端向Web应用发起HTTP请求,相应的会话会被激活

Tomcat中如何配置活化与钝化

Tomcat的会话管理器包括两种:
`org.apache.catelina.session.StandardManager`类:标准会话管理器

 org.apache.catalina.session.PersistentManager类:功能更强大
StandardManager
标准会话管理器的持久化对象文件被保存在:
<CATALINA_HOME>/work/Catalina/[hostname]/[application_name]/SESSIONS.ser
PersistentManager
  • 具有容错功能,及时把HttpSession对象备份到会话Store中,当Tomcat服务器意外关闭后再重启时,可以恢复HttpSession。
  • 可以灵活的控制内存中HttpSession对象的数目,将部分HttpSession对象转移到会话store中。
    默认存储目录
    <CATALINA_HOME>/work/Catalina/[hostname]/[application_name]/SESSIONS.ser

配置如下,在META-INF目录下的Context.xml(不一定要在这个位置配置,配置context元素的五种方法都可以配置,但这样最简单方便)

<Context>
    <Manager className="org.apache.catalina.session.PersistentManager" maxIdleSwap="1">
        <Store className="org.apache.catalina.session.FileStore" directory="C:\Users\victor\Desktop\js"/>
    </Manager>
</Context>
className:指定会话管理器的类名

saveOnRestart:设置为true,当web应用终止时,会把内存中所有的
HttpSession对象都持久化。

maxActiveSessions:设定可以处于运行时状态的会话的最大数目,如果超过这一数目,Tomcat会将一下HttpSession对象持久化。-1表示不限制。

minIdleSwap:指定会话处于不活动状态的最短时间(单位为秒),超过这一时间的HttpSession对象会被持久化。-1表示不限制。

maxIdleSwap:指定处于不活动状态的最长时间。

maxIdleBackup:指定会话处于不活动状态的最长时间,超过这一时间Tomcat
将为这个HttpSession持久化。

maxInactiveInterval:指定会话处于不活动状态的最长时间,超过,Tomcat会使这个会话过期。
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值