Как я могу поддерживать HttpSessions в Tomcat? - PullRequest
2 голосов
/ 27 августа 2010

У меня проблемы с тайм-аутом сеанса в моем веб-приложении, обслуживаемом Tomcat.После прочтения документации Tomcat истекает время сеансов, которое можно настроить в файле web.xml.

<session-config>
        <session-timeout>30</session-timeout>
    </session-config>

Quesion) Означает ли это 30 минут с момента создания сеанса для пользователя?Или через 30 минут с момента последнего доступа к сеансу?

Если, как я изначально думал, прошло 30 минут с момента последнего доступа к сеансу, я не вижу такого поведения.Кажется, мои сеансы потеряны, так как я пользуюсь сайтом.Существуют ли другие способы настройки поведения сеанса, кроме этого?Что-то мне не хватает?

Apache Tomcat / 6.0.20

1 Ответ

8 голосов
/ 27 августа 2010

Сеанс запускается для веб-браузера, когда он подключается к вашему приложению. Tomcat закрывает сеанс на сервере по истечении максимального периода бездействия (30 минут).

Этот тайм-аут сбрасывается всякий раз, когда в веб-браузере появляется активность, например, обновление текущей страницы или навигация по другим страницам под управлением приложения. Простое сохранение окна браузера не сохраняет сеанс открытым, потому что оно не создает никаких действий в браузере.

Вы можете установить его в файле web.xml, как вы описали.

Вы также можете установить его для объекта session, вызвав setMaxInactiveInterval(int interval) Указывает время в секундах между клиентскими запросами до того, как контейнер сервлета аннулирует этот сеанс.

Вы должны убедиться, что cookie включены для вашего браузера. В противном случае вы создаете новый сеанс с каждым запросом. Вы должны позвонить HttpServletResponse.encodeURL(String url) для каждого URL в вашем приложении. Из документа API:

"Кодирует указанный URL-адрес путем включения в него идентификатора сеанса или, если кодирование не требуется, возвращает URL-адрес без изменений. Реализация этого метода включает логику для определения необходимости кодирования идентификатора сеанса. в URL. Например, если браузер поддерживает файлы cookie или отслеживание сеанса отключено, кодировка URL не требуется.

Для надежного отслеживания сеанса все URL-адреса, генерируемые сервлетом, должны запускаться с помощью этого метода. В противном случае перезапись URL не может использоваться с браузерами, которые не поддерживают файлы cookie. "

...