会话处于非活动状态时未调用Java SessionDestroyed

时间:2016-03-30 12:52:31

标签: java servlets tomcat8 servlet-listeners

出于测试目的,我在web.xml中进行了以下输入

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

现在,问题是用户在In-activity 1分钟后退出但是我的Session Listener的sessionDestroyed方法没有被调用。但是,当我手动注销时,每件事情都运转良好。

有什么办法可以解决这个问题吗?

使用Tomcat 8

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

根据servlet规范11.2.1,

时会通知HttpSessionListener
  

HttpSession已创建,无效或超时。

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

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