我遇到的情况是,我在同一台服务器上使用不同的端口运行两个不同的Web应用程序。它们都在运行Java的Jetty servlet容器,因此它们都使用名为JSESSIONID的cookie参数来跟踪会话ID。这两个Web应用程序正在争用会话ID。
req.getSession(false);
null
req.getSession(true)
因此,每个Web应用程序之间的Session都会发生混乱。req.getSession(false)如果已经定义了JSESSIONID cookie,我真的很想返回一个有效的会话。
req.getSession(false)
一种选择是基本上使用HashMap和称为WEBAPP1SESSIONID和WEBAPP2SESSIONID的cookie重新实现Session框架,但这很糟糕,这意味着我将不得不将新的Session内容侵入ActionServlet和其他一些地方。
这一定是其他人遇到的问题。码头HttpServletRequest.getSession(boolean)只是cr脚吗?
HttpServletRequest.getSession(boolean)
我有一个类似的问题:在应用程序启动时选择的本地主机上不同端口上的同一应用程序的一个或多个实例,每个实例都使用自己的码头实例。
一段时间后,我想到了这个:
socketManager.getLocalPort()
(sessionHandler.getSessionManager().setSessionCookie(String)
这样,我为每个实例使用不同的Cookie名称-因此不再受到干扰。