Java Session Timeout

1. Oversigt

Denne vejledning viser, hvordan du konfigurerer session timeout i en Servlet-baseret webapplikation.

2. Global session timeout i web.xml

Timeout for alle Http-sessioner kan konfigureres i web.xml af webapplikationen:

  ...  10  

Bemærk, at værdien for timeout er indstillet på få minutter, ikke på få sekunder.

En interessant sidenode er, at der i et Servlet 3.0-miljø, hvor annoteringer kan bruges i stedet for XML-implementeringsbeskrivelsen, er der ingen måde at programmatisk indstille den globale sessionstimeout på. Programmatisk konfiguration til sessionstimeout har et åbent problem på Servlet Spec JIRA - men problemet er endnu ikke planlagt.

3. Programmatisk timeout pr. Individuel session

Timeout for kun den aktuelle session kan specificeres programmatisk via API'en til javax.servlet.http.HttpSession:

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

I modsætning til element, der havde en værdi i minutter, setMaxInactiveInterval metode accepterer en værdi i sekunder.

4. Timecout for Tomcat-session

Alle Tomcat-servere leverer en standard web.xml fil, der kan konfigureres globalt til hele webserveren - den findes i:

$ tomcat_home / conf / web.xml

Denne standardplaceringsbeskrivelse konfigurerer en med en værdi på 30 minutter.

Individuelle implementerede applikationer, der leverer deres egne timeout-værdier i deres egne web.xml deskriptorer prioriteres over og vil tilsidesætte dette globale web.xml konfiguration.

Bemærk, at det samme er muligt i anløbsbro også: filen er placeret i:

$ jetty_home / etc / webdefault.xml

5. Konklusion

Denne tutorial diskuterede de praktiske aspekter af hvordan man konfigurerer timeout for HTTP-session i et Servlet Java-program. Vi illustrerede også, hvordan dette kan indstilles på webserverniveau, både i Tomcat såvel som i Jetty.

Implementeringen af ​​disse eksempler findes i github-projektet - dette er et Eclipse-baseret projekt, så det skal være let at importere og køre som det er.

Når projektet kører lokalt, kan du få adgang til hjemmesiden html på: