tomcat session timeout 配置

Tomcat的会话超时可以在多个级别上设置:tomcat实例级别、Web应用级别、servlet级别以及运行时Context代码级别。 较低级别的设定会覆盖较高级别的设定。

优先级:越细粒度优先级越高,也就是应用程序代码中硬编码>webapp级别>Web容器级别。

Web容器级别

在conf/web.xml中设置:

<!-- ==================== Default Session Configuration ================= -->
<!-- You can set the default session timeout (in minutes) for all newly   -->
<!-- created sessions by modifying the value below.                       -->
    <session-config>
        <session-timeout>30</session-timeout>
    </session-config>

这里是以分钟为单位的,默认是30分;

webapp级别

在webapp中的WEB-INF/web.xml

<!-- 配置Session失效时间 -->
<session-config>
    <session-timeout>30</session-timeout>
</session-config>

也是以min为单位;

应用程序代码中硬编码

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

设置单位为秒,设置为-1永不过期。

Context配置

还有一种配置,但现在比较少见了,因为需要将Context配置在server.xml里: 修改conf/server.xml,单位为秒:

<Context path="/test" docBase="/home/httpd/html/test"
    defaultSessionTimeOut="3600" isWARExpanded="true"
    isWARValidated="false" isInvokerEnabled="true"
    isWorkDirPersistent="false"/>

重启时保持会话

在关闭Tomcat实例/取消Web应用部署时,缺省会把当前的活动会话保存到硬盘上,并在重启启动/部署时在把会话从硬盘上加载到内存中。

文件保存在各目录下的SESSIONS.SER中。有时可能会话中保存了敏感信息,或者不希望使用这个特性,可以配置Context.xml文件关闭这个选项。

配置 manager.pathname == ""即可,形如:

    <Manager pathname="" />