Я не делаю Spring, поэтому никаких формулировок по этому поводу, но javax.servlet.http.HttpSessionListener
должно работать, если оно реализовано и зарегистрировано должным образом.Вам необходимо зарегистрировать его как <listener>
в web.xml
следующим образом:
<listener>
<listener-class>com.example.MyHttpSessionListener</listener-class>
</listener>
Имейте в виду, что вы проверяете время ожидания сеанса в правильном направлении.Например, закрытие окна веб-браузера не приведет к немедленному уничтожению сеанса на стороне сервера.Сеанс будет действовать до тех пор, пока клиент не отправит HTTP-запрос в течение 30 минут.Эти 30 минут являются временем ожидания сеанса по умолчанию, которое настраивается с помощью записи <session-timeout>
в web.xml
.
Кроме того, сервлет-контейнер не будет немедленно уничтожать сеансы точно после значения времени ожидания.Это фоновое задание, которое выполняется с определенными интервалами (например, 5 ~ 15 минут в зависимости от нагрузки и типа / типа контейнера сервлет-контейнера).Поэтому не удивляйтесь, если вы не увидите, чтобы метод sessionDestroyed()
вызывался после точно 30 минут бездействия.Однако, когда вы запускаете HTTP-запрос в сеансе по тайм-ауту, но еще не уничтожен, он будет немедленно уничтожен.
См. Также: