出于测试目的,我在web.xml中进行了以下输入
<session-config>
<session-timeout>1</session-timeout>
</session-config>
现在,问题是用户在In-activity 1分钟后退出但是我的Session Listener的sessionDestroyed方法没有被调用。但是,当我手动注销时,每件事情都运转良好。
有什么办法可以解决这个问题吗?
使用Tomcat 8
提前感谢您的帮助。
答案 0 :(得分:1)
根据servlet规范11.2.1,
时会通知HttpSessionListener
HttpSession
已创建,无效或超时。
但是你不应该期望servlet容器会在超时后立即调用sessionDestroyed
- 它将使用后台线程来定期检查会话的有效性。
在您的设置中,当您在超时后向服务器发送请求并尝试访问会话时,您应该看到已销毁的事件。在这种情况下,servlet容器将检查有效性,调用侦听器的sessionDestroyed
并返回空会话。