Java Session Timeout

Java Session Timeout

1. Überblick

Dieses Tutorial zeigt, wie Siesession timeout in a Servlet based web application einrichten.

2. Globales Sitzungszeitlimit inweb.xml

Das Zeitlimit aller HTTP-Sitzungen kann inweb.xml der Webanwendung konfiguriert werden:




    ...
    
        10
    

Beachten Sie, dass der Wert des Timeouts aufin minutes eingestellt ist, nicht in Sekunden.

Ein interessanter Nebenknoten ist, dass in einer Servlet 3.0-Umgebung, in der Annotationen anstelle des XML-Bereitstellungsdeskriptors verwendet werden können,no way to programmatically set the global session timeout vorhanden sind. Bei der programmgesteuerten Konfiguration für das Sitzungszeitlimit ist auf der Servlet-Spezifikation JIRA ein offenes Problem aufgetreten, das jedoch noch nicht geplant wurde.

3. Programmatisches Timeout pro Einzelsitzung

Das Timeout vonthe current session only kann programmgesteuert über die API vonjavax.servlet.http.HttpSession angegeben werden:

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

Im Gegensatz zum<session-timeout>-Element, das einen Wert in Minuten hatte, akzeptiert diesetMaxInactiveInterval-Methode einen Wertin seconds.

4. Tomcat-Sitzungszeitlimit

Alle Tomcat-Server bietena default web.xml file, die global für den gesamten Webserver konfiguriert werden können. Diese befinden sich in:

$tomcat_home/conf/web.xml

Dieser Standard-Deployment-Deskriptor konfiguriert<session-timeout> mit einem Wert von 30 Minuten.

Einzelne bereitgestellte Anwendungen, die ihre eigenen Timeout-Werte in ihren eigenenweb.xml-Deskriptoren angeben, haben Vorrang vor undwill override this global web.xml-Konfiguration.

Beachten Sie, dass diespossible in Jetty as well ist: Die Datei befindet sich in:

$jetty_home/etc/webdefault.xml

5. Fazit

In diesem Lernprogramm wurden die praktischen Aspekte vonhow to configure the timeout of the HTTP Session in einer Servlet-Java-Anwendung erläutert. Wir haben auch gezeigt, wie dies sowohl in Tomcat als auch in Jetty auf Webserverebene eingestellt werden kann.

Die Implementierung dieser Beispiele finden Sie inthe github project - dies ist ein Eclipse-basiertes Projekt, daher sollte es einfach zu importieren und auszuführen sein.

Wenn das Projekt lokal ausgeführt wird, kann auf die Homepage html zugegriffen werden unter: