«1. Обзор

В этом руководстве показано, как настроить время ожидания сеанса в веб-приложении на основе сервлета.

2. Глобальный тайм-аут сеанса в файле web.xml

Тайм-аут всех сеансов Http можно настроить в файле web.xml веб-приложения:

<?xml version="1.0" encoding="UTF-8"?>
<web-app ...>

    ...
    <session-config>
        <session-timeout>10</session-timeout>
    </session-config>

</web-app>

Обратите внимание, что значение тайм-аута установлено в минутах, а не в секундах.

Интересным побочным узлом является то, что в среде Servlet 3.0, где аннотации могут использоваться вместо дескриптора развертывания XML, нет возможности программно установить глобальное время ожидания сеанса. Программная конфигурация для тайм-аута сеанса имеет открытую проблему в Servlet Spec JIRA, но проблема еще не запланирована.

3. Программный тайм-аут для отдельного сеанса

Тайм-аут текущего сеанса можно указать программно только через API javax.servlet.http.HttpSession:

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

В отличие от \u003csession- timeout\u003e, который имел значение в минутах, метод setMaxInactiveInterval принимает значение в секундах.

4. Тайм-аут сеанса Tomcat

Все серверы Tomcat предоставляют файл web.xml по умолчанию, который можно настроить глобально для всего веб-сервера — он находится в:

$tomcat_home/conf/web.xml

Этот дескриптор развертывания по умолчанию не настройте \u003csession-timeout\u003e со значением 30 минут.

Отдельные развернутые приложения, предоставляющие свои собственные значения времени ожидания в своих собственных дескрипторах web.xml, будут иметь приоритет над этой глобальной конфигурацией web.xml и переопределять ее.

Обратите внимание, что то же самое возможно и в Jetty: файл находится в:

$jetty_home/etc/webdefault.xml

5. Заключение

В этом руководстве обсуждались практические аспекты настройки тайм-аута HTTP-сессии в Java-приложение сервлета. Мы также показали, как это можно настроить на уровне веб-сервера как в Tomcat, так и в Jetty.

Реализацию этих примеров можно найти в проекте github — это проект на основе Eclipse, поэтому его легко импортировать и запускать как есть.

Когда проект выполняется локально, доступ к html домашней странице можно получить по адресу: