Délai d'expiration de la session Java

1. Vue d'ensemble

Ce didacticiel montrera comment configurer le délai d'expiration de session dans une application Web basée sur un servlet .

2. Global Session Timeout dans le fichier web.xml

Le délai d'expiration de toutes les sessions Http peut être configuré dans le fichier web.xml de l'application Web:

  ...  10  

Notez que la valeur du délai d'expiration est définie en minutes et non en secondes.

Un sidenode intéressant est que, dans un environnement Servlet 3.0 où des annotations peuvent être utilisées à la place du descripteur de déploiement XML, il n'y a aucun moyen de définir par programme le délai d'expiration de la session globale . La configuration par programmation du délai d'expiration de session a un problème ouvert sur la spécification de servlet JIRA - mais le problème n'a pas encore été planifié.

3. Timeout programmatique par session individuelle

Le délai d'expiration de la session en cours uniquement peut être spécifié par programme via l'API de javax.servlet.http.HttpSession :

HttpSession session = request.getSession(); session.setMaxInactiveInterval(10*60);

Contrairement à la élément qui avait une valeur en minutes, la méthode setMaxInactiveInterval accepte une valeur en secondes .

4. Délai d'expiration de la session Tomcat

Tous les serveurs Tomcat fournissent un fichier web.xml par défaut qui peut être configuré globalement pour l'ensemble du serveur Web - il se trouve dans:

$tomcat_home/conf/web.xml

Ce descripteur de déploiement par défaut configure un avec une valeur de 30 minutes.

Les applications déployées individuelles, fournissant leurs propres valeurs de délai d'expiration dans leurs propres descripteurs web.xml, auront la priorité sur et remplaceront cette configuration globale web.xml .

Notez que la même chose est possible dans Jetty: le fichier se trouve dans:

$jetty_home/etc/webdefault.xml

5. Conclusion

Ce didacticiel a abordé les aspects pratiques de la configuration du délai d'expiration de la session HTTP dans une application Java Servlet. Nous avons également illustré comment cela peut être défini au niveau du serveur Web, à la fois dans Tomcat et Jetty.

L'implémentation de ces exemples peut être trouvée dans le projet github - il s'agit d'un projet basé sur Eclipse, il devrait donc être facile à importer et à exécuter tel quel.

Lorsque le projet s'exécute localement, la page d'accueil html est accessible à l'adresse: