Tomcat怎样设置session超时

本文将介绍怎样去配置Tomcat的Session超时时间,配置Session超时有4种方式,分别为:Tomcat实例级别、Web应用级别、Servlet级别以及运行时Context代码级别。

Tomcat的会话超时可以在多个级别上设置:

  1. Web容器级别

  2. webapp级别

  3. Servlet级别(优先级最高)

  4. 运行时Context级别

上面几种设置方式的优先级别为: 3(最高) > 2 > 1(最低)

注意:较低级别的设定会被较高级别的配置进行覆盖,例如:Servlet级别的配置可以覆盖Tomcat实例级别配置。

Web容器级别

该级别的优先级最低。如果我们在 webapp/WEB-INF/web.xml 中配置了 Session 超时,则Web容器级别的配置将失效;该级别通过修改Tomcat安装目录中conf/web.xml文件,内容如下:

<session-config>  
    <!-- 以分钟为单位的,默认是30分 -->
    <session-timeout>30</session-timeout>  
</session-config>

webapp级别

该级别是我们使用最频繁的级别,该级别通过修改自己的Web应用程序 WEB-INF/web.xml 文件即可,如下:

<!-- 配置Session失效时间 -->
<session-config>
    <!-- 以分钟为单位的,设置超时为30分  -->
    <session-timeout>30</session-timeout>
</session-config>

 

Servlet级别(硬编码方式)

该级别是通过在Java代码中手动设置Session的超时时间,代码如下:

// 以秒为单位 
session.setMaxInactiveInterval(30*60);

注意:该方式不推荐使用

运行时Context级别

该级别需要修改 conf/server.xml 配置文件,修改该文件的Context标签的defaultSessionTimeOut属性即可,如下:

<Context path="/test" 
    docBase="/home/httpd/html/test"  
    <!-- 单位为秒,下面为3600秒,1个小时 -->
    defaultSessionTimeOut="3600" 
    isWARExpanded="true"  
    isWARValidated="false" 
    isInvokerEnabled="true"  
    isWorkDirPersistent="false"/>

附:

重启时保持会话 

在关闭Tomcat实例/取消Web应用部署时,缺省会把当前的活动会话保存到硬盘上,并在重启启动/部署 时在把会话从硬盘上加载到内存中。 文件保存在各目录下的SESSIONS.SER中。有时可能会话中保存了敏感信息,或者不希望使用这个特 性,可以配 Context.xml文件关闭这个选项。 配置 manager.pathname == "" 即可,形如: 

<Manager pathname="" />

参考资料:

https://jiangshuiy.iteye.com/blog/1843622

不是每一次努力都有收获,但是,每一次收获都必须努力。
0 不喜欢
说说我的看法 -
全部评论(
没有评论
关于
本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明,如果原文没有版权声明,请来信告知:hxstrive@outlook.com
公众号