Changer le nom du cookie JSESSIONID

Je dois exécuter plusieurs serveurs tomcat dans une seule boîte physique. En accédant à celles-ci à partir d’un navigateur, lorsque l’utilisateur bascule entre les applications, il en résulte une déconnexion de l’utilisateur ayant précédemment access à l’application. Ceci est dû au conflit de cookies JSESSIONID.

Une solution possible consiste à exécuter chaque application dans un contexte différent. Malheureusement, mes applications ne fonctionneront pas dans le paramètre de chemin de contexte car aucune des ressources n’est accessible avec request.getContextPath () ajouté en tête.

Cela me laisse pour changer le nom du cookie JSESSIONID pour résoudre le conflit. Y a-t-il un moyen de faire cela? Si oui, comment?

J’espère que je suis clair en énonçant ma question.

Remarque: Toutes mes applications s’exécutent dans des ports différents sur le même ordinateur.

Tout est beaucoup plus simple avec l’API Servlet 3.0.

Vous pouvez maintenant le configurer dans votre web.xml:

  MY_JSESSIONID_YAHOOOOOO   

C’est tout!

En utilisant deux propriétés système suivantes, cela peut être réalisé facilement.

  • org.apache.catalina.SESSION_COOKIE_NAME
  • org.apache.catalina.SESSION_PARAMETER_NAME

Toute valeur peut être transmise aux propriétés ci-dessus pour modifier les valeurs par défaut.

Vous trouverez ici des détails complets avec un exemple de script.

Ce qui suit fonctionne pour moi sur Tomcat7 dans le fichier context.xml:

  

Tomcat 7 le déplace de org.apache.catalina.SESSION_COOKIE_NAME vers un atsortingbut de la configuration principale . http://tomcat.apache.org/migration-7.html#Session_manager_configuration

Je ne pense pas que ce soit possible pour le moment – voir https://issues.apache.org/bugzilla/show_bug.cgi?id=42419

La dernière entrée indique “Ceci a été corrigé dans 5.5.x et sera inclus dans la version 5.5.28 et ultérieure” – qui est la prochaine version du point – 5.5.27 est la version actuelle.

Pas sûr à 100% si cela fonctionnera, mais vous pouvez utiliser l’atsortingbut jvmRoute , qui est généralement utilisé dans un environnement à charge équilibrée / en cluster pour que les équilibreurs de charge puissent distinguer les nœuds. Exemple:

  

Cela finira par générer une valeur JSESSIONID qui ressemble à “ABCDEF123456.node1”.

Lien de documentation .