2014-10-09 17:20题主

关于WebUtil的checkLogin -win7-tomcat环境下tomcat重启后sessionList状态

在WebUtil的checkLogin中如果重启tomcat服务,sessionList清除对象但request的getSession并没有清除,导致sessionList为空,将原来request.setAttribute("sys.user", session.getAttribute("sys.user"));
修改为

这样重启tomcat服务时,用户账户的在线统计也正常了(逻辑上,如果有用户登录了,tomcat服务重启,session没有失效,那么不在在线统计范围内);
不过,有没有人知道,为什么tomcat重启了,request的session还不清除呢,只能结束tomcat进程session才清除,这个tomcat的生命周期有没有人了解?
2014-10-09 20:03#1
这个不是一个bug,服务器本身有session的序列化存储功能
比如tomcat设置saveOnRestart=false(调试时建议设置为true),在tomcat停止或重启时将会停止session的存储,当然也可以实现sessionList hashMap的序列化(不建议)
2014-10-10 07:38#2
谢谢建议,此法无论是否序列化session都有效!
2014-10-10 14:27#3
原来是tomcat自动序列化了,这样就完全解开谜团了,我就说怎么直接结束tomcat进程session无效,重启tomcat服务session就有效。

返回开发者社区