Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java HttpSessionListener-会话超时时会调用sessionDestroyed方法吗?_Java_Session_Servlets_Jakarta Ee_Session Timeout - Fatal编程技术网

Java HttpSessionListener-会话超时时会调用sessionDestroyed方法吗?

Java HttpSessionListener-会话超时时会调用sessionDestroyed方法吗?,java,session,servlets,jakarta-ee,session-timeout,Java,Session,Servlets,Jakarta Ee,Session Timeout,我有一个HttpSessionListener的实现,其中应用程序中的“锁定”资源通过sessionDestroyed方法释放 “锁”信息保存在数据库中,在大多数情况下,锁的释放工作正常。但在某些情况下,我仍然看到资源被锁定-即使没有活动的会话 所以,我怀疑是否有可能不调用sessionDestroyed?假设会话超时-是否调用sessionDestroyed方法 假设用户在不注销(破坏会话)的情况下关闭浏览器选项卡,那么会调用侦听器吗 提前谢谢 servlet引擎将处理会话超时。 它将自行确定

我有一个
HttpSessionListener
的实现,其中应用程序中的“锁定”资源通过
sessionDestroyed
方法释放

“锁”信息保存在数据库中,在大多数情况下,锁的释放工作正常。但在某些情况下,我仍然看到资源被锁定-即使没有活动的会话

所以,我怀疑是否有可能不调用
sessionDestroyed
?假设会话超时-是否调用
sessionDestroyed
方法

假设用户在不注销(破坏会话)的情况下关闭浏览器选项卡,那么会调用侦听器吗


提前谢谢

servlet引擎将处理会话超时。 它将自行确定会话何时不再有效,并调用
sessionDestroyed
。(这可能发生在用户关闭浏览器后的一段时间)

其他几点:

日志记录

也许您可以向sessionCreated和sessionDestroyed方法添加一些日志记录。对于创建的每个会话,您都应该有一个sessionDestroyed

例外处理

东西保持锁定的事实可能不是由于会话没有被破坏,而是由于sessionDestroyed逻辑中的错误。您是否有足够的异常处理/日志记录

定时

您是否等待了足够长的时间来检查锁定的资源?(关闭所有客户端,并考虑应用程序/服务器上配置的会话超时值)。如前所述,服务器无法检测到用户关闭浏览器,但它会维护其http会话列表,并在超时后销毁它们

所以,我怀疑sessionDestroyed是否有可能没有被调用?假设会话超时,会调用sessionDestroyed方法吗

对。会话超时或有人以编程方式(通过
HttpSession.invalidate()
)使其过期时,会话将被销毁

假设用户在不注销(破坏会话)的情况下关闭浏览器选项卡,那么会调用侦听器吗

否,因为会话仍然有效。如果该用户再次打开网站,他/她的会话仍然有效

HttpSession

通知在绑定方法完成后发送。对于无效或过期的会话,将在会话无效或过期后发送通知


谢谢你,迪瓦勒!异常处理成功了。我没有发现数据库异常。一旦异常得到处理,将测试应用程序并验证结果。