OVH Cloud OVH Cloud

[Tomcat] Gestion des sessions

3 réponses
Avatar
Xavier MOGHRABI
Bonjour,

Je m'intéresse à la manière dont Tomcat gère les sessions utilisateurs.
En fait, je souhaite qu'à la suite d'un crash (du réseau...) pouvoir
récupérer la session de l'utilisateur et la lui rendre afin qu'il puisse
continuer à travailler là où il en était.

J'ai parcouru le site de tomcat et j'ai lu sur le clustering qu'il était
possible de partager les sessions en différents serveurs grâce à leur
stockage dans un endroit partagé tel qu'un SGBD ou fichier XML.

Du coup, je me dis si mon serveur Tomcat sauvegarde les sessions dans un
SGBD je pourrais les récuperer à la suite d'un plantage du serveur ou du
réseau. Toutefois je ne sais pas comment je peux faire ceci. Est-ce que
quelqu'un pourrait me fournir de la documentation là-dessus ou m'en dire
plus.

Merci d'avance
_________________
Xavier
http://www.enstimac.fr/~moghrabi

3 réponses

Avatar
Xavier MOGHRABI
complément d'information :
En plus de comprendre comment Tomcat sauvegarde les sessions, je suis
intéressé de savoir comment il gère les objets relatifs à la session.

Si quelqu'un a ces informations, je suis preneur.

Xavier


Bonjour,

Je m'intéresse à la manière dont Tomcat gère les sessions utilisateurs.
En fait, je souhaite qu'à la suite d'un crash (du réseau...) pouvoir
récupérer la session de l'utilisateur et la lui rendre afin qu'il puisse
continuer à travailler là où il en était.

J'ai parcouru le site de tomcat et j'ai lu sur le clustering qu'il était
possible de partager les sessions en différents serveurs grâce à leur
stockage dans un endroit partagé tel qu'un SGBD ou fichier XML.

Du coup, je me dis si mon serveur Tomcat sauvegarde les sessions dans un
SGBD je pourrais les récuperer à la suite d'un plantage du serveur ou du
réseau. Toutefois je ne sais pas comment je peux faire ceci. Est-ce que
quelqu'un pourrait me fournir de la documentation là-dessus ou m'en dire
plus.

Merci d'avance
_________________
Xavier
http://www.enstimac.fr/~moghrabi


Avatar
cfranco
Xavier MOGHRABI wrote:

Bonjour,

Je m'intéresse à la manière dont Tomcat gère les sessions utilisateurs.
En fait, je souhaite qu'à la suite d'un crash (du réseau...) pouvoir
récupérer la session de l'utilisateur et la lui rendre afin qu'il puisse
continuer à travailler là où il en était.

J'ai parcouru le site de tomcat et j'ai lu sur le clustering qu'il était
possible de partager les sessions en différents serveurs grâce à leur
stockage dans un endroit partagé tel qu'un SGBD ou fichier XML.

Du coup, je me dis si mon serveur Tomcat sauvegarde les sessions dans un
SGBD je pourrais les récuperer à la suite d'un plantage du serveur ou du
réseau. Toutefois je ne sais pas comment je peux faire ceci. Est-ce que
quelqu'un pourrait me fournir de la documentation là-dessus ou m'en dire
plus.


A voir du côté de org.apache.catalina.session.FileStore et de
org.apache.catalina.session.JDBCStore, deux implémentations de
l'interface org.apache.catalina.session.Store.

Pour utiliser le premier, qui enregistre les sessions dans un fichier
<TOMCAT_HOME>/work/localhost/applicationname/Sessions.ser, il te faut
ajouter l'élément suivant dans le fichier server.xml :

<Manager className="org.apache.catalina.session.PersistentManager"
debug="0"
saveOnRestart="true"
maxActiveSessions="-1"
minIdleSwap="-1"
maxIdleSwap-"-1"
maxIdleBackup="-1">
<Store className="org.apache.catalina.session.FileStore"/>
</Manager>


Si tu veux utiliser une base de données à la place, il faut remplacer
l'élément <Store .../> par :

<Store className="org.apache.catalina.session.JDBCStore"
driverName="org.gjt.mm.mysql.Driver"
connectionURL="jdbc:mysql://localhost/tomcatsessions?user=username;
password=password"
sessionTable="sessions"
sessionIdCol="data"
sessionValidCol="valid"
sessionMaxInactiveCol="maxinactive"
sessionLastAccessedCol="lastaccess"
checkInterval="60"
debug="99" />

Ceci supposant bien évidemment que tu utilises MySQL, avec une base de
données nommée "tomcatsessions", contenant une table "sessions" créée
comme suit :

create table sessions
(
id varchar(100) not null primary key,
valid char(1) not null,
maxinactive int non null,
lastaccess bigint,
data mediumblob
);

Si tu utilises un autre SGBD, tu n'auras qu'à adapter tout ça pour que
ça corresponde à ce qui te convient.


(Source: "Apache Jakarta-Tomcat", par James Goodwill, édité chea Apress)



--
Christophe Franco

Avatar
TestMan
Petit rappel, tous les objets stockés en sessions doivent convenablement
gérer la serialisation (càd soit être simple et sérialisable, soit
disposer de mechnismes permetant le retour dans un contexte operationel
apres deserialisation).

Car pour assurer la persistence des sessions et le clustering de des
frontaux, la majorité des serveurs utilisent la serialisation :)

Bon ok, c un piege classique mais bon, autant faire un chtit rappel pour
eviter aux nouveaux venus de tomber dans ce piege à 0,1€ ...

A+
TM

Xavier MOGHRABI wrote:

Bonjour,

Je m'intéresse à la manière dont Tomcat gère les sessions utilisateurs.
En fait, je souhaite qu'à la suite d'un crash (du réseau...) pouvoir
récupérer la session de l'utilisateur et la lui rendre afin qu'il puisse
continuer à travailler là où il en était.

J'ai parcouru le site de tomcat et j'ai lu sur le clustering qu'il était
possible de partager les sessions en différents serveurs grâce à leur
stockage dans un endroit partagé tel qu'un SGBD ou fichier XML.

Du coup, je me dis si mon serveur Tomcat sauvegarde les sessions dans un
SGBD je pourrais les récuperer à la suite d'un plantage du serveur ou du
réseau. Toutefois je ne sais pas comment je peux faire ceci. Est-ce que
quelqu'un pourrait me fournir de la documentation là-dessus ou m'en dire
plus.

Merci d'avance
_________________
Xavier
http://www.enstimac.fr/~moghrabi