【发布时间】:2011-03-22 11:04:18
【问题描述】:
我有一个 javax.servlet.http.HttpSessionListener 的实现,它应该检测 Struts 项目中的用户会话失效/超时。
sessionDestroyed() 似乎永远不会被调用,我可以通过删除我的 JSESSIONID 并刷新页面来重现它。我还发现让浏览器保持打开状态直到会话超时具有相同的效果。
该站点在 JBoss 4.2.3.GA 和 Java 1.5 中运行。
我开始怀疑 HttpSessionListener 没有按照我的预期做,我错过了什么吗?
编辑:
我的监听器在我的 web.xml 中注册如下:
<listener>
<listener-class>com.domain.web.listener.LogoutListener</listener-class>
</listener>
【问题讨论】:
-
你在web.xml中配置监听了吗?
-
@Suresh 是的,我的监听器是在 web.xml 中配置的;将更新我的问题
-
我在 Tomcat 和 Java 1.7 中遇到了同样的问题:在打开浏览器时会话超时后并不总是调用“sessionDestroyed”。
-
@Andremoniy 如果浏览器打开并显示站点页面,那么它可能正在通过插件(如 Firebug)发送请求,这将使会话保持活动状态。还要记住 sessionDestroyed 仅在会话数据在服务器上被销毁时才被调用,这不一定与用户失去对它的访问权限相同。
标签: java jakarta-ee session-timeout