1

web.xml 中的 session-timeout 设置已正确设置,并且 tomcat 在指定值处超时。问题是超时是如何发生的。

导航到新页面时会重置超时,但是激活浏览器(通过密钥库或鼠标单击)或进行 AJAX 调用不会重置超时。我尝试了一些 tomcat 属性无济于事,是否有处理这种类型的超时配置的属性?

先感谢您

4

2 回答 2

0

您是否尝试过删除 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 文件中尝试过类似的操作?

于 2012-07-10T18:03:55.760 回答
0

HttpSession 是一个服务器端对象,因此 Web 浏览器中的击键和鼠标事件不会自动重置超时。但是,您可以监视客户端上的键盘和鼠标事件,并定期对服务器进行 RPC 调用以保持会话处于活动状态。

但是您还说 Ajax 调用不会重置服务器上的会话超时。这很奇怪,因为我已经做过很多次了,它确实为我重置了它。您使用的是 GWT RPC 还是其他序列化机制?

我不确定,但也许您还需要从 Ajax 调用实现访问会话以重置超时,例如通过调用getThreadLocalRequest().getSession()(如果使用 GWT RPC)。

于 2012-07-10T19:53:52.403 回答