在应用程序中,一旦用户模式发生变化,我们就会切换会话。
所以基本上我们有这样的东西:
request.getSession(false).invalidate();
request.getSession(true);
现在发生了问题:超时后,会话没有被删除。在调试了一些内部代码后,我发现在org.eclipse.jetty.server.session.AbstractSession.timeout()
会话中没有删除 if _requests > 0
. 并且_requests
大于零,因为在会话org.eclipse.jetty.server.session.SessionHandler.doScope(String, Request, HttpServletRequest, HttpServletResponse)
的complete()
运行access
中增加了相同的会话,即使在调用期间实际会话被替换了!
有没有人遇到过同样的问题并设法解决了?
更新:我创建了一个解决方法。请参阅下面接受的答案。
更新:泽西社区中的错误:https ://bugs.eclipse.org/bugs/show_bug.cgi?id=377610