gpt4 book ai didi

java - 定义自定义事件/操作/请求以重置 Java Web App 中 session 超时的计时器?

转载 作者:行者123 更新时间:2023-11-28 22:20:19 25 4
gpt4 key购买 nike

我在 eclipse 中为我的 Web 应用程序使用 Tomcat 7.0、Spring 4.0.2、Web Module 3.0。我在 app/web.xml 和 tomcat/conf/web.xml 中配置了我的 session 超时。

<session-config><session-timeout>30</session-timeout></session-config>

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

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

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

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

但我认为这个解决方案很复杂,而且性能方面也不是个好主意。

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

如果我的任何假设是错误的,请纠正我。提前致谢。任何帮助将不胜感激。

最佳答案

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

相关属性是:

org.apache.catalina.core. StandardHostValve.ACCESS_SESSIONorg.apache.catalina.STRICT_SERVLET_COMPLIANCE

在这里查看进一步的讨论,尤其是最后一篇文章:

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

关于java - 定义自定义事件/操作/请求以重置 Java Web App 中 session 超时的计时器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23649578/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com