HttpSessionListener未检测到会话超时

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)

Whi*_*g34 5

sessionDestroyed()在Web容器到期会话之前,不会调用该方法.服务器不知道您删除了JSESSIONIDcookie,您的浏览器看起来就像是另一个新会话.

从我在Tomcat中看到的,我相信这取决于每个Web容器实现,会话到期每分钟都会发生.因此,即使在会话超时之后,可能会有延迟,直到下一次检测到到期.

它绝对应该最终发生.特别是如果您将超时设置为一分钟并等待几分钟.请注意,超时以分钟为单位指定,因此一分钟是测试的最小值.我假设您的监听器已在您的web.xml文件中注册?