JSESSIONID Cookie с датой истечения срока действия в Tomcat - PullRequest
26 голосов
/ 08 февраля 2011

Как лучше всего установить дату истечения срока действия для файла cookie JSESSIONID, отправляемого Tomcat для сеанса сервлета?

По умолчанию срок действия файла cookie выглядит как «сеанс», что означает, что сеанс исчезает в клиенте, как только браузер перезапускается.Но я хотел бы оставить его открытым в течение 12 часов, даже после перезапуска браузера (и затем соответствующим образом настроить время ожидания сеанса на сервере).

Есть ли способ установить срок действия в Tomcat, например, с помощью какого-либо параметра конфигурации или модуля расширения?Или есть надежный способ установить дату истечения срока действия JSESSIONID с помощью фильтра сервлетов?

Ответы [ 3 ]

60 голосов
/ 27 марта 2012

Начиная с Servlet 3.0, это можно просто указать в файле web.xml:

<session-config>
    <session-timeout>720</session-timeout> <!-- 720 minutes = 12 hours -->
    <cookie-config>
        <max-age>43200</max-age> <!-- 43200 seconds = 12 hours -->
    </cookie-config>
</session-config>

Обратите внимание, что session-timeout измеряется в минутах, а max-age измеряется в секундах.

0 голосов
/ 08 февраля 2011

Я не думаю, что можно делать то, что вы хотите, без изменения кода Tomcat.

Обратите внимание, однако, что это может иметь неприятный побочный эффект: если пользователь начинает сеанс и остается активным в течение двенадцати часов, его время ожидания сеанса будет соответственно обновлено (время ожидания будет обновляться при каждом запросе), но егоcookie не будет, и пользователь потеряет сеанс через 12 часов, даже если он был активен все это время.

0 голосов
/ 08 февраля 2011

Если вы хотите, чтобы сеансы истекали через 12 часов, а сервер перестал работать, добавьте это в ваш web.xml:

<session-config>
  <session-timeout>720</session-timeout>
</session-config>

По умолчанию Tomcat настроен на сериализацию сеансов, чтобы они выдерживали перезапуски приложений.Смотри http://tomcat.apache.org/tomcat-5.5-doc/config/manager.html#Restart%20Persistence

...