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-коду домашней страницы можно получить по адресу: