HttpSessionListener не определяет время ожидания сеанса - PullRequest
3 голосов
/ 22 марта 2011

У меня есть реализация javax.servlet.http.HttpSessionListener, которая должна обнаруживать недействительность / тайм-аут сеанса пользователя в проекте Struts.

sessionDestroyed () никогда не вызывается, я могу воспроизвести это, удалив мой JSESSIONID и обновив страницу. Я также обнаружил, что оставление браузера открытым до истечения времени ожидания сеанса имеет тот же эффект.

Сайт работает в JBoss 4.2.3.GA с Java 1.5.

Я начинаю подозревать, что HttpSessionListener не делает то, что я ожидаю, я что-то упустил?

Редактировать:

Мой слушатель зарегистрирован в моем web.xml следующим образом:

<listener>
    <listener-class>com.domain.web.listener.LogoutListener</listener-class>
</listener>

Ответы [ 2 ]

5 голосов
/ 22 марта 2011

Метод sessionDestroyed() не вызывается, пока веб-контейнер не завершит сеанс.Сервер не знает, что вы удалили файл cookie JSESSIONID, ваш браузер просто выглядит как еще один новый сеанс.

Из того, что я видел в Tomcat, и я считаю, что это зависит от реализации каждого веб-контейнера, сеансаистечения происходит каждую минуту.Таким образом, даже после истечения времени ожидания сеанса может произойти задержка до следующего обнаружения истечения срока действия.Особенно, если вы установите время ожидания в минуту и ​​подождите несколько минут.Обратите внимание, что время ожидания указывается в минутах, поэтому одна минута - это минимум для проверки.Я предполагаю, что ваш слушатель зарегистрирован в вашем файле web.xml?

0 голосов
/ 01 июля 2011

вам нужно зарегистрировать слушателя в web.xml под WEB-INF в вашем приложении.имя вашего слушателя

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