java - example - jsessionid spring
Cambiar el nombre JSESSIONID de cookie (6)
Al usar las siguientes dos propiedades del sistema, esto se puede lograr con facilidad.
- org.apache.catalina.SESSION_COOKIE_NAME
- org.apache.catalina.SESSION_PARAMETER_NAME
Cualquier valor se puede pasar a las propiedades anteriores para cambiar los valores predeterminados.
Aquí se encuentran los detalles completos con algunos guiones de muestra.
Tengo el requisito de tener que ejecutar múltiples servidores tomcat en una sola caja física. Al acceder a estos desde un navegador, cuando el usuario cambia entre las aplicaciones, se produce el cierre de sesión del usuario con acceso anterior a la aplicación. Esto se debe al conflicto de cookies de JSESSIONID.
Una posible solución es ejecutar cada aplicación en un contexto diferente. Lamentablemente, mis aplicaciones no funcionarán en la configuración de la ruta de contexto ya que no se accede a ninguno de los recursos con request.getContextPath () al principio.
Esto me deja cambiar el nombre de la cookie JSESSIONID para resolver el conflicto. ¿Hay alguna forma de hacer esto? Si es así, ¿cómo?
Espero tener clara mi pregunta.
Nota: Todas mis aplicaciones se ejecutan en diferentes puertos en la misma máquina.
Lo siguiente funciona para mí en Tomcat7 en el archivo context.xml:
<Context path="/yourApp" sessionCookieName="custom_session_id">
No creo que sea posible en este momento; consulte https://issues.apache.org/bugzilla/show_bug.cgi?id=42419
La última entrada indica "Esto se ha corregido en 5.5.x y se incluirá en 5.5.28 en adelante", que es el siguiente lanzamiento de punto. 5.5.27 es la versión actual.
No está 100% seguro de si esto funcionará, pero puede usar el atributo jvmRoute
, que generalmente se usa en un entorno agrupado de carga / agrupado para que los equilibradores de carga puedan diferenciar los nodos. Ejemplo:
<Engine name="Catalina" defaultHost="localhost" jvmRoute="node1">
Esto terminará generando un valor de JSESSIONID que se parece a "ABCDEF123456.node1".
Todo es mucho más simple con Servlet API 3.0.
Ahora puedes configurarlo en tu web.xml:
<session-config>
<cookie-config>
<name>MY_JSESSIONID_YAHOOOOOO</name>
</cookie-config>
</session-config>
¡Eso es!
Tomcat 7 mueve esto de org.apache.catalina.SESSION_COOKIE_NAME a un atributo en la configuración principal de <Context>. http://tomcat.apache.org/migration-7.html#Session_manager_configuration