meb*_*ada 3 java servlets session-timeout
我是 JSP 新手。我在一个类中使用了以下代码,该代码实现了HttpSessionListener在会话超时时获取 SESSION OUT:
public void sessionCreated(HttpSessionEvent arg0) {
System.out.print("SESSION Created");
}
public void sessionDestroyed(HttpSessionEvent arg0) {
System.out.print("SESSION OUT");
}
Run Code Online (Sandbox Code Playgroud)
我设置web.xml:
<session-config>
<session-timeout>1</session-timeout>
</session-config>
Run Code Online (Sandbox Code Playgroud)
servlet 等待两分钟多,然后调用sessionDestroyed.
有没有办法强制sessionDestroyed超时?
提前致谢。
是什么让您认为会话超时时没有被sessionDestroyed调用?或者换句话说,您对它被调用的事实有何解释?
Servlet 将以自己的方式处理会话的有效性,包括会话超时,并且当它确定会话不再有效时,它将调用您的方法。然而,我认为任何 servlet 都不能保证这方面的任何特定的及时性;我的理解是,它有点像垃圾收集,因为它保证在某个时刻发生,但不一定在会话有资格销毁的最早可能的情况下发生。
在任何情况下,似乎几乎可以肯定 servlet 正在执行您想要的操作 - 看到会话超时并调用适当的方法 - 唯一的问题是您是否会在最后一个请求后 60 秒或稍后。我建议,一般来说,您不应该依赖调用此方法的确切时间;当然,可以使用它来清理资源,但不能用于程序正确性之类的目的(无论如何,IllegalStateExceptions如果在无效会话上调用方法,您都会得到这样的结果)。如果您觉得确实必须依靠这一点,也许可以解释一下您正在做什么,以便其他人可以提出更合适的方法来实现这一目标。