会话超时设置,并且tomcat以指定值超时。问题是超时是如何发生的。
导航到新页面时会重置超时,但是激活浏览器(通过密钥库或鼠标单击)或进行AJAX调用不会重置超时。我尝试了一些tomcat属性无济于事,是否有一个属性可以处理这种类型的超时配置?
提前谢谢
答案 0 :(得分: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文件中尝试过类似的东西吗?
答案 1 :(得分:0)
HttpSession是服务器端对象,因此Web浏览器中的键击和鼠标事件不会自动重置超时。但是,您可以监视客户端上的键盘和鼠标事件,并定期对服务器进行RPC调用,以使会话保持活动状态。
但是你也说Ajax调用不会重置服务器上的会话超时。这很奇怪,因为我已经做了很多次,它确实为我重置了它。您使用的是GWT RPC还是其他序列化机制?
我不确定,但也许您还需要从Ajax调用实现中访问会话,以便重置超时,例如调用getThreadLocalRequest().getSession()
(如果使用GWT RPC)。