Найти тему

Время ожидания сеанса Java

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, нет возможности программно установить глобальное время ожидания сеанса . Программная конфигурация для тайм-аута сеанса имеет открытую проблему в JIRA Servlet Spec, но эта проблема еще не запланирована.

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

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

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

В отличие от элемента <session-timeout> , который имел значение в минутах, метод setMaxInactiveInterval принимает значение в секундах .

4. Время ожидания сеанса Tomcat

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

$tomcat_home/conf/web.xml

Этот дескриптор развертывания по умолчанию настраивает <session-timeout> со значением 30 минут.

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

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

$jetty_home/etc/webdefault.xml

5. Вывод

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

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

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