У меня есть следующая реализация HttpSessionlistener
public class SessionListener implements HttpSessionAttributeListener, HttpSessionListener {
public void attributeAdded(HttpSessionBindingEvent event) {
...
}
public void attributeRemoved(HttpSessionBindingEvent event) {
...
}
public void attributeReplaced(HttpSessionBindingEvent event) {
}
//HttpSesion creation & destruction
public void sessionCreated(HttpSessionEvent event) {
HttpSession session = event.getSession();
//log created time
}
public void sessionDestroyed(HttpSessionEvent event) {
HttpSession session = event.getSession();
long destroyedTime = System.currentTimeMillis();
//log destroyed time
}
}
В основном я регистрирую время создания сеанса и время его уничтожения. Но если сеанс длинный (по умолчанию 30 минут), а пользователь закрывает браузер тем временем,
sessionDestroyed
не называется?
Почему? Существует ли временное решение для регистрации точно, когда сеанс был уничтожен (когда пользователь закрывает браузер)? Должна ли быть проблема браузера, чтобы убить сеанс, когда он закрыт?
Есть ли какой-либо интерфейс, который я должен реализовать для этого?
Спасибо!