Colisión JSESSIONID entre dos servidores en la misma ip pero puertos diferentes

Tengo una situación en la que tengo dos aplicaciones web diferentes que se ejecutan en un solo servidor, utilizando diferentes puertos. Ambos ejecutan el contenedor de servlet Jetty de Java, por lo que ambos usan un parámetro de cookie llamado JSESSIONID para rastrear el ID de sesión. Estas dos aplicaciones web están peleando por el id de sesión.

Abra una pestaña de Firefox, y vaya a WebApp1La respuesta HTTP de WebApp1 tiene un encabezado set-cookie con JSESSIONID = 1Firefox ahora tiene un encabezado de cookie con JSESSIONID = 1 en todas sus solicitudes HTTP a WebApp1Abra una segunda pestaña de Firefox, y vaya a WebApp2El requisito de HTTP para WebApp2 también tiene un encabezado de cookie con JSESSIONID = 1, pero en el doGet, cuando llamoreq.getSession(false); yo obtengonull. Y si llamoreq.getSession(true) Obtengo un nuevo objeto Session, pero luego la respuesta HTTP de WebApp2 tiene un encabezado set-cookie con JSESSIONID = 20Ahora, WebApp2 tiene una sesión de trabajo, pero la sesión de WebApp1 se ha ido. Ir a WebApp1 me dará una nueva sesión, eliminando la sesión de WebApp2.Continuar por siempre

Así que las Sesiones se debaten entre cada aplicación web. Realmente me gustaría para elreq.getSession(false) para devolver una sesión válida si ya existe una cookie JSESSIONID definida.

Una opción es, básicamente, volver a implementar el marco de la sesión con un HashMap y cookies llamadas WEBAPP1SESSIONID y WEBAPP2SESSIONID, pero eso apesta, y significa que tendré que piratear las cosas de la nueva sesión en ActionServlet y en algunos otros lugares.

Este debe ser un problema que otros han encontrado. Es de jettyHttpServletRequest.getSession(boolean) simplemente crappy?

Respuestas a la pregunta(6)

Su respuesta a la pregunta