【问题标题】:Java SessionDestroyed not called when session is inactive [duplicate]会话处于非活动状态时未调用 Java SessionDestroyed [重复]
【发布时间】:2016-03-30 12:52:31
【问题描述】:

出于测试目的,我在 web.xml 中做了以下条目

<session-config>
        <session-timeout>1</session-timeout>
</session-config>

现在,问题是用户在活动 1 分钟后退出,但我的会话侦听器的 sessionDestroyed 方法没有被调用。但是,当我手动注销时,一切正常。

有什么办法可以解决吗?

使用 Tomcat 8

提前感谢您的帮助。

【问题讨论】:

  • 你使用什么 servlet 容器?
  • 你等了多久才不耐烦?

标签: java servlets tomcat8 servlet-listeners


【解决方案1】:

根据 servlet 规范 11.2.1,HttpSessionListener 在何时收到通知

HttpSession 已创建、无效或超时。

但是你不应该期望 servlet 容器会在超时后立即调用sessionDestroyed - 它会使用后台线程定期检查会话的有效性。

在您的设置中,当您在超时后向服务器发送请求并尝试访问会话时,您应该会看到被破坏的事件。在这种情况下,servlet 容器会检查有效性,调用监听器的sessionDestroyed 并返回一个空会话。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-06
    • 2022-01-23
    • 2018-11-26
    • 1970-01-01
    • 2012-12-08
    • 2021-10-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多