Tomcat 中会话超时的相关配置
QC同事提到似乎有时Tomcat的会话超时表现有问题,记录一下可能用到的配置。
1)超时时间的设定
tomcat的会话超时可以在多个级别上设置:tomcat实例级别、Web应用级别、servlet级别以及运行时Context代码级别。
较低级别的设定会覆盖较高级别的设定。
一般常用的是在前面两个级别上设置,分别在 /conf/web.xml和/webapps/yourapp/WEB-INF/web.xml,形如:
<session-config>
<session-timeout>30</session-timeout>
</session-config>
单位是分钟。
2)重启时保持会话
在关闭Tomcat实例/取消Web应用部署时,缺省会把当前的活动会话保存到硬盘上,并在重启启动/部署时在把会话从硬盘上加载到内存中。
文件保存在各目录下的SESSIONS.SER中。有时可能会话中保存了敏感信息,或者不希望使用这个特性,可以配置Context.xml文件关闭这个选项。
配置 manager.pathname == ""即可,形如:
<Manager pathname="" />
网上多流传配置 Persistent Manager 来完成这个功能,Tomcat 4.x 和 5.5 在配置文档中都明确的指出 Persistent Manager 是一个体验性质的特性,并没有经过完全的测试。
不过话说Tomcat关于会话的设定也不甚直观,在其文档中明确的说明,Manager组件的工作就是session manager,可以设置maxInactiveInterval,而web.xml中有可以设定 session-timeout。再加上全局、应用,不同地方定义的超时时间撞到一起时,又有优先级的问题。这个设计是毫无意义的复杂。
1)超时时间的设定
tomcat的会话超时可以在多个级别上设置:tomcat实例级别、Web应用级别、servlet级别以及运行时Context代码级别。
较低级别的设定会覆盖较高级别的设定。
一般常用的是在前面两个级别上设置,分别在 /conf/web.xml和/webapps/yourapp/WEB-INF/web.xml,形如:
<session-config>
<session-timeout>30</session-timeout>
</session-config>
单位是分钟。
2)重启时保持会话
在关闭Tomcat实例/取消Web应用部署时,缺省会把当前的活动会话保存到硬盘上,并在重启启动/部署时在把会话从硬盘上加载到内存中。
文件保存在各目录下的SESSIONS.SER中。有时可能会话中保存了敏感信息,或者不希望使用这个特性,可以配置Context.xml文件关闭这个选项。
配置 manager.pathname == ""即可,形如:
<Manager pathname="" />
网上多流传配置 Persistent Manager 来完成这个功能,Tomcat 4.x 和 5.5 在配置文档中都明确的指出 Persistent Manager 是一个体验性质的特性,并没有经过完全的测试。
不过话说Tomcat关于会话的设定也不甚直观,在其文档中明确的说明,Manager组件的工作就是session manager,可以设置maxInactiveInterval,而web.xml中有可以设定 session-timeout。再加上全局、应用,不同地方定义的超时时间撞到一起时,又有优先级的问题。这个设计是毫无意义的复杂。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?