Java, Tomcat, Sessions - JSessionId исчезает - PullRequest
1 голос
/ 02 апреля 2010

У меня проблема с сеансами Java.

Я занимаюсь разработкой простого веб-приложения, в котором я должен использовать сеансы и атрибуты сеансов. Все хорошо, пока я не закрою свой браузер. Когда я закрываю свой браузер, JSessionId исчезает. Вот мой код:

request.getSession().setMaxInactiveInterval(30*60); //it's 30 minutes
request.getSession().setAttribute("someinteger", 10);

Это прекрасно работает, но когда я закрываю браузер и снова открываю его, я не могу найти jsessionId (до того, как я закрыл браузер, я мог найти его в разделе «localhost»). Странно то, что я все еще могу найти печенье "Someinteger". В чем проблема? Что я делаю не так?

Я также использую это: текст ссылки , и он показывает, что срок действия файла cookie JSESSIONID истекает: "SESSION", а "someinteger" истекает через 30 минут

Заранее спасибо.

Ответы [ 2 ]

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

Сеансовые куки не сохраняются при перезапуске браузера. Таким образом, файл cookie JSESSIONID не будет существовать при повторном открытии браузера.

1 голос
/ 27 мая 2010

На самом деле причина в том, что время ожидания сеанса, определенное в файле web.xml, вероятно, все еще установлено по умолчанию:

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

Сеансовый cookie будет сохраняться при перезапуске браузера, если браузер настроен на это (все делают по умолчанию). Файл cookie с JSESSIONID - это не специальный файл cookie для браузера, это просто другой файл cookie.

Если вы посмотрите на файл cookie, то увидите, что срок его действия истек. Истечение срока действия и сохранение cookie не зависят от времени ожидания сеанса. За исключением того, что cookie-файл - это то, что связывает браузер с качелями.

Если файл cookie или сеанс потеряны, то сеанс фактически теряется.

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