Время истечения сеанса? - PullRequest
1 голос
/ 24 апреля 2010

Я включил сеансы в своем приложении:

// appengine-web.xml
<sessions-enabled>true</sessions-enabled>

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

Это может быть хорошо, просто интересно, документировано ли это где-нибудь, поэтому я могу положиться на этот факт?

Я попробовал следующее, чтобы проверить, можем ли мы его настроить:

// in web.xml
<session-config>
    <session-timeout>10</session-timeout>
</session-config>

также

// in my servlet
getThreadLocalRequest().getSession().setMaxInactiveInterval(60 * 5);

но такое же поведение, данные сеанса больше не доступны после перезапуска браузера.

Я посмотрел статистику по моему проекту и вижу данные, используемые для чего-то вроде объектов "_ah_SESSION". Это сеансы сверху? Если это так, не должны ли они быть очищены, так как они больше не действительны? (Надеюсь, Гэй позаботится об этом автоматически?)

Спасибо

Ответы [ 3 ]

4 голосов
/ 26 апреля 2010

При использовании учетных записей Google истечение срока сеанса фактически обрабатывается в консоли администратора App Engine, а не через Java. Войдите в консоль администратора по адресу http://appengine.google.com/ и выберите «Настройки приложения», затем измените «Срок действия cookie» на любой период, который вам больше подходит.

2 голосов
/ 24 апреля 2010

Так работает сессия. JSESSIONID обычно содержит идентификатор сеанса в HTTP. Когда браузер закрывает сеанс, сеанс все еще остается активным на сервере, и все истекшие сеансы освобождаются через определенный период времени.
При повторном открытии нового сеанса браузера браузер не имеет представления ни о каких предыдущих сеансах, поэтому создается новый.
Есть обходные пути для этого ...
- Создать Cookie
- Сохраните уникальную переменную в скрытом поле формы и используйте ее.
- перезапись URL

1 голос
/ 08 января 2017

По умолчанию Jetty * устанавливает файл cookie JSESSIONID (на основе сеанса), что означает, что он будет удален после закрытия вашего браузера. При повторном открытии браузера будет создан новый файл cookie JSESSIONID, и контекст предыдущего сеанса будет потерян.

Если вы хотите сохранить cookie-файл дольше, просто добавьте следующую конфигурацию в ваш web.xml:

Установить срок действия куки

<context-param>
    <param-name>org.mortbay.jetty.servlet.MaxAge</param-name>
    <!-- amount of seconds (1 month in this case) -->
    <param-value>2592000</param-value> 
</context-param>

Кроме того, вы должны сообщить Google, как долго он будет хранить сессии в _ah_SESSION

Установить время истечения сеанса

<session-config>
    <!-- minutes of inactivity: (1 month in this case) -->
    <session-timeout>43200</session-timeout>   
</session-config>

* Другие конфигурации Jetty можно найти здесь: https://wiki.eclipse.org/Jetty/Howto/SessionIds

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...