Time-out van Java-sessie

1. Overzicht

Deze tutorial laat zien hoe je het kunt instellen sessie time-out in een op Servlet gebaseerde webapplicatie.

2. Time-out voor globale sessie in het web.xml

De time-out van alle Http-sessies kan worden geconfigureerd in het web.xml van de webapplicatie:

  ...  10  

Merk op dat de waarde van de time-out is ingesteld in minuten, niet in seconden.

Een interessante bijkomstigheid is dat in een Servlet 3.0-omgeving waar annotaties kunnen worden gebruikt in plaats van de XML-implementatiedescriptor, er geen manier om de algemene sessietime-out programmatisch in te stellen. Programmatische configuratie voor sessietime-out heeft een open probleem met de Servlet Spec JIRA - maar het probleem is nog niet gepland.

3. Programmatische time-out per individuele sessie

De time-out van alleen de huidige sessie kan programmatisch worden gespecificeerd via de API van het javax.servlet.http.HttpSession:

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

In tegenstelling tot de element met een waarde in minuten, het setMaxInactiveInterval methode accepteert een waarde in seconden.

4. Time-out van Tomcat-sessie

Alle Tomcat-servers bieden een standaard web.xml bestand dat globaal kan worden geconfigureerd voor de hele webserver - dit bevindt zich in:

$ tomcat_home / conf / web.xml

Deze standaardimplementatiedescriptor configureert een met een waarde van 30 minuten.

Individuele geïmplementeerde applicaties, met hun eigen time-outwaarden web.xml descriptoren hebben voorrang op en zal deze globale overschrijven web.xml configuratie.

Merk op dat hetzelfde ook mogelijk is in Jetty: het bestand bevindt zich in:

$ jetty_home / etc / webdefault.xml

5. Conclusie

In deze tutorial kwamen de praktische aspecten van hoe u de time-out van de HTTP-sessie configureert in een Servlet Java-applicatie. We hebben ook geïllustreerd hoe dit op webserverniveau kan worden ingesteld, zowel in Tomcat als in Jetty.

De implementatie van deze voorbeelden is te vinden in het github-project - dit is een op Eclipse gebaseerd project, dus het zou gemakkelijk moeten kunnen worden geïmporteerd en uitgevoerd zoals het is.

Als het project lokaal draait, is de html van de homepage toegankelijk via: