Java Wicket意外会话id

Java Wicket意外会话id,java,session,jetty,wicket,Java,Session,Jetty,Wicket,我正在使用Wicket开发一个Web应用程序,它运行在Jetty服务器上 在特定情况下,应用程序的用户会自动丢失会话,在关闭浏览器之前无法再次登录。(我排除了会话超时和故意注销) 记录会话失效和跟踪问题原因的最佳方法是什么?在Jetty端,您可以设置一个servlet来记录各种创建/销毁事件 为此创建自己的类,并将其添加到WEB-INF/WEB.xml MySessionListener 您可以编写WebSession的子类,并重写invalidate()方法以在失效之前打印堆栈跟踪 这将有助

我正在使用Wicket开发一个Web应用程序,它运行在Jetty服务器上

在特定情况下,应用程序的用户会自动丢失会话,在关闭浏览器之前无法再次登录。(我排除了会话超时和故意注销)


记录会话失效和跟踪问题原因的最佳方法是什么?

在Jetty端,您可以设置一个servlet来记录各种创建/销毁事件

为此创建自己的类,并将其添加到
WEB-INF/WEB.xml


MySessionListener

您可以编写
WebSession
的子类,并重写
invalidate()
方法以在失效之前打印堆栈跟踪


这将有助于确定会话的失效是由于Wicket中的某个原因还是由于Wicket之外的原因造成的?您是否排除了您(或其他人)重新启动服务器的可能性?是的,它发生在应用程序中的随机时间和页面上,持续数周。与服务器重启无关,也可能只是会话超时;这种情况发生在任何特定浏览器(版本)或任何浏览器上吗?它发生在任何浏览器上,或者您可以使用
@WebListener
注释:并实现
HttpSessionListener
接口。我尝试过这种方法,它在一定程度上有助于获取有关会话无效和创建的调试信息。它不能帮助我在这里跟踪问题,因为它在过程中的某个点提供信息太晚了。我正在搜索在某种“内部会话id表”中检查传入JSSessionID是否存在的点。如果无法识别会话id,则应在日志中警告我。(现有cookie,错误id)