Existe-t-il un moyen de spécifier un magasin de session différent avec Tomcat?

StackOverflow https://stackoverflow.com/questions/82340

  •  01-07-2019
  •  | 
  •  

Question

Tomcat (version 5 ici) stocke les informations de session en mémoire. Lors de la mise en cluster, ces informations sont régulièrement diffusées sur les autres serveurs du cluster pour que tout soit synchronisé. Vous pouvez utiliser un magasin de bases de données pour rendre les sessions persistantes, mais ces informations ne sont également écrites que périodiquement et ne sont réellement utilisées que pour la récupération après incident, au lieu de remplacer les sessions en mémoire.

Si vous ne souhaitez pas utiliser de sessions "collantes" (notre configuration ne le permet malheureusement pas), cela pose le problème de la désynchronisation des sessions.

Dans d’autres langues, les infrastructures Web vous permettent généralement d’utiliser une base de données comme magasin de session principal. Bien que cela pose un problème potentiel de dimensionnement, la gestion de session est très simple. Je me demande s’il est possible de faire en sorte que tomcat utilise une base de données de cette façon (techniquement, cela supprimerait également la nécessité de toute configuration de cluster dans le fichier tomcat server.xml).

Était-ce utile?

La solution

Il existe certainement un moyen. Bien que je vote fortement pour les sessions collantes, cela économise beaucoup de charge pour vos serveurs / bases de données (sauf en cas d'échec) ...

http://tomcat.apache.org/tomcat-5.5 -doc / config / manager.html contient des informations sur la configuration de SessionManager et sur celle de Tomcat. Selon vos besoins, vous devrez peut-être implémenter votre propre gestionnaire de session, mais ce point de départ devrait vous aider.

Autres conseils

Jetez un coup d'oeil à Terracotta . Je pense que cette solution peut résoudre vos problèmes de dimensionnement sans une refonte majeure de l'application.

J'ai toujours été fan de la technique des sessions Rails: stocker les sessions (zippées + cryptées + signées) dans le cookie de l'utilisateur. De cette façon, vous pouvez équilibrer la charge en fonction du contenu de votre coeur, sans avoir à vous soucier des sessions collantes, ni à frapper la base de données pour vos données de session, etc. Je ne suis pas sûr que vous puissiez l'implémenter facilement dans une application java de réécriture de votre code d'accès à la session. En tout cas, juste une pensée.

Une autre alternative serait le memcached-session-manager , un memcached. Basculement de session et solution de réplication de session basés sur tomcat 6.x / 7.x. Il prend en charge les sessions collantes et les sessions non collantes.

J'ai créé ce projet pour tirer le meilleur parti des performances et de la fiabilité et pouvoir évoluer en ajoutant simplement plus de nœuds tomcat et memcached.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top