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