在Java Web App中定义自定义事件/操作/请求以重置会话超时的计时器?

我在eclipse中使用Tomcat 7.0,Spring 4.0.2,Web Module 3.0作为我的Web应用程序。 我在app / web.xml以及tomcat / conf / web.xml中配置了会话超时。

30 

我知道tomcat必须重置它的内部计时器来计算这30分钟并使某些事件/动作/请求的会话(会话超时)无效。

我每隔5分钟发送一个名为captureLastActiveTimeForCurrentFile的请求。 所以现在应用服务器永远不会使会话无效,因为我每隔5分钟发送一次请求,所以它会在每5分钟后重置一次会话超时定时器

现在我的问题是如何忽略任何特定请求(此处为captureLastActiveTimeForCurrentFile )以重置会话超时计时器 。 这意味着当我发送captureLastActiveTimeForCurrentFile请求时,服务器不能重置它的计时器。 对于所有其他人的请求它应该工作,因为它是如何工作的。 因此,如果我不向服务器发送任何其他(不包括captureLastActiveTimeForCurrentFile )请求,则必须在30分钟后使会话无效。

我能想到的解决方案:
– >我将在web.xml文件中配置会话超时很长时间。
– >我将在服务器上的每个请求调用之后捕获一个全局变量中的最后请求时间 ,不包括captureLastActiveTimeForCurrentFile
– >我将启动自己的调度程序,它将在每5分钟后运行,它将检查上次请求时间 – 当前时间> 30分钟 ,然后我将手动使会话无效。

但我认为这个解决方案很复杂,性能明智不是一个好主意。

有没有其他方法可以在服务器上配置排除的请求 ,以便服务器将忽略该特定请求。

如果我的任何假设是错误的,请纠正我。 提前致谢。 任何帮助将是欣赏。

如果captureLastActiveTimeForCurrentFile背后的代码没有显式访问用户的HTTP会话(即通过调用request.getSession()),那么您可以通过在Tomcat中设置一些属性来忽略对此路径的请求。 请注意,设置这些将为未明确访问用户会话的任何其他映射引入类似的行为。

相关的属性是:

org.apache.catalina.core。 StandardHostValve.ACCESS_SESSION org.apache.catalina.STRICT_SERVLET_COMPLIANCE

请参阅此处的进一步讨论,尤其是上一篇文章

http://tomcat.10.x6.nabble.com/Session-timeouts-ignore-quot-periodic-polling-quot-URL-td2159572.html