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会使这个会话过期。

猜你喜欢

转载自blog.csdn.net/qq_41374768/article/details/89399408