Apache Tomcat 7 Ändern der JSESSIONID bei jeder Anforderung

Dieses Problem macht mich wahnsinnig. Vielleicht kann mir jemand helfen, das Problem zu verstehen. Ich habe eine Tomcat-Webanwendung, die von HAProxy bereitgestellt wird. HAProxy führt auch das SSL-Offloading durch und ist für die Verwendung von Sticky-Sessions konfiguriert. Ich verwende die Sitzungsreplikationsfunktion von Tomcat, die anscheinend einwandfrei funktioniert. Die Sitzungen werden auf beiden Anwendungsservern angezeigt.

Aus irgendeinem Grund generiert Tomcat für jede einzelne Webanforderung eine neue JSESSIONID und kopiert dann den Inhalt der alten Sitzung in die neue Sitzung. Das heißt, meine Sitzungsinhalte sind in der neuen Sitzung noch vorhanden, aber eine neue ID wird generiert und an den Client zurückgesendet. Dies funktioniert jedoch nur für meine Webanwendung. Dies wird für die Anwendung / manager nicht ausgeführt.

Ich habe jeden Trick in dem Buch ausprobiert, wie zum Beispiel das Setzen dieses in meiner context.xml:

<Valve className="org.apache.catalina.authenticator.BasicAuthenticator" changeSessionIdOnAuthentication="false" />

Und setzen Sie diese Attribute auf mein Context-Element:

<Context path="/myapp" reloadable="false" override="true" useNaming="false" allowLinking="true" useHttpOnly="false" sessionCookiePath="/" sessionCookiePathUsesTrailingSlash="false">

Und trotzdem ist das Ergebnis das gleiche. Tomcat generiert bei jeder Anforderung eine neue Sitzungs-ID und kopiert den Inhalt der alten Sitzung in die neue ID.

Ich würde vermuten, dass es etwas mit HAProxy zu tun hatte, außer dass die / manager-Anwendung auch hinter HAProxy steckt und dieses Verhalten nicht aufweist.

Warum macht Tomcat das und was kann ich tun, um das zu verhindern?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage