Сеанс запускается для веб-браузера, когда он подключается к вашему приложению. Tomcat закрывает сеанс на сервере по истечении максимального периода бездействия (30 минут).
Этот тайм-аут сбрасывается всякий раз, когда в веб-браузере появляется активность, например, обновление текущей страницы или навигация по другим страницам под управлением приложения. Простое сохранение окна браузера не сохраняет сеанс открытым, потому что оно не создает никаких действий в браузере.
Вы можете установить его в файле web.xml, как вы описали.
Вы также можете установить его для объекта session
, вызвав setMaxInactiveInterval(int interval)
Указывает время в секундах между клиентскими запросами до того, как контейнер сервлета аннулирует этот сеанс.
Вы должны убедиться, что cookie включены для вашего браузера. В противном случае вы создаете новый сеанс с каждым запросом. Вы должны позвонить HttpServletResponse.encodeURL(String url)
для каждого URL в вашем приложении. Из документа API:
"Кодирует указанный URL-адрес путем включения в него идентификатора сеанса или, если кодирование не требуется, возвращает URL-адрес без изменений. Реализация этого метода включает логику для определения необходимости кодирования идентификатора сеанса. в URL. Например, если браузер поддерживает файлы cookie или отслеживание сеанса отключено, кодировка URL не требуется.
Для надежного отслеживания сеанса все URL-адреса, генерируемые сервлетом, должны запускаться с помощью этого метода. В противном случае перезапись URL не может использоваться с браузерами, которые не поддерживают файлы cookie. "