gpt4 book ai didi

tomcat - HttpSession.setMaxInactiveInterval 在 Tomcat 6 中不起作用

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

我正在尝试使用 HttpSession.setMaxInactiveInterval 调整 session 超时,但它不起作用。

这是我的代码 (Groovy),它无一异常(exception)地执行:

def paramValue = WebAttributes.REQUEST.getParameter('maxInactiveSeconds');
println 'paramValue=' + paramValue;
if (paramValue != null) {
def seconds = Integer.parseInt(paramValue);
WebAttributes.REQUEST.getSession().setMaxInactiveInterval(seconds);
}

一些细节:

  • Tomcat 6.0.16
  • 这是在与“正常”应用程序(即具有视觉内容)分开的网络应用程序中发生的,但我已经定义了 emptySessionPath="true"因此 session *应该*在网络应用程序之间共享

谢谢,

占星术

最佳答案

你是如何测试的?每一个新的请求都会再次推迟超时,你知道吗?因此,在预期的超时之前按 F5 请求是无济于事的。 Web 容器也不会立即销毁 session ,因此您不会立即看到任何 HttpSessionListener 的结果。它会以一定的间隔收割它们,可以是每分钟,也可以是每 15 分钟。但是,如果在超时后 收到新请求,它会立即获取它。

关于您的“ session 应该 共享”短语,验证这一点的最佳方法当然是通过编程方式检查 session ID(例如显示 ${pageContext.session .id}) 或仅通过确定网络浏览器中 jsessionid cookie 的值。

要监视实际 session 的创建和销毁,请实现虚拟 HttpSessionListener .这是一个基本示例:

public class MyHttpSessionListener implements HttpSessionListener {
public void sessionCreated(HttpSessionEvent event) {
System.out.printf("%s session %s created %n", new Date(), event.getSession().getId());
}
public void sessionDestroyed(HttpSessionEvent event) {
System.out.printf("%s session %s destroyed %n", new Date(), event.getSession().getId());
}
}

希望这对您有所帮助。

关于tomcat - HttpSession.setMaxInactiveInterval 在 Tomcat 6 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1848327/

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