sea*_*ges 3 java session-timeout java-ee
我有一个javax.servlet.http.HttpSessionListener的实现,它应该检测Struts项目中的用户会话失效/超时.
sessionDestroyed()似乎永远不会被调用,我可以通过删除我的JSESSIONID并刷新页面来重现这一点.我还发现让浏览器保持打开状态直到会话超时具有相同的效果.
该站点使用Java 1.5在JBoss 4.2.3.GA中运行.
我开始怀疑HttpSessionListener不能达到我的预期,我错过了什么?
编辑:
我的监听器在我的web.xml中注册如下:
<listener>
<listener-class>com.domain.web.listener.LogoutListener</listener-class>
</listener>
Run Code Online (Sandbox Code Playgroud)
sessionDestroyed()在Web容器到期会话之前,不会调用该方法.服务器不知道您删除了JSESSIONIDcookie,您的浏览器看起来就像是另一个新会话.
从我在Tomcat中看到的,我相信这取决于每个Web容器实现,会话到期每分钟都会发生.因此,即使在会话超时之后,可能会有延迟,直到下一次检测到到期.
它绝对应该最终发生.特别是如果您将超时设置为一分钟并等待几分钟.请注意,超时以分钟为单位指定,因此一分钟是测试的最小值.我假设您的监听器已在您的web.xml文件中注册?