会话超时设置已正确设置,tomcat将按指定值超时。问题是超时是如何发生的。
导航到新页面时会重置超时,但激活浏览器(通过密钥库或鼠标单击)或进行AJAX调用不会重置超时。我尝试了一些tomcat属性,但没有成功,有没有处理这种类型超时配置的属性?
提前感谢
HttpSession是一个服务器端对象,因此Web浏览器中的按键和鼠标事件不会自动重置超时。但是,您可以监视客户端上的键盘和鼠标事件,并定期对服务器进行RPC调用,以保持会话有效。
但是您还说Ajax调用不会重置服务器上的会话超时。这很奇怪,因为我已经做了很多次了,它确实为我重置了它。你是在使用GWTRPC还是其他序列化机制?
我不确定,但也许您还需要从Ajax调用实现访问会话,以便重置超时,例如通过调用getThreadLocalRequest().getSession()
(如果使用GWTRPC)。
您是否尝试删除server.xml文件中的connectionTimeout参数?
即:如果你有这个:
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" URIEncoding="UTF-8" redirectPort="8443" />
将其更改为:
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="<A VERY LARGE NUMBER>" URIEncoding="UTF-8" redirectPort="8443" />
或:
<Connector port="8080" protocol="HTTP/1.1" URIEncoding="UTF-8" redirectPort="8443" />
你在server.xml文件中尝试过这样的操作吗?