Для уведомления объекта о недействительности или завершении HTTP-сессии в Java веб-приложениях используются слушатели сессий (Session Listeners), определенные спецификацией сервлет API.
Классы, реализующие интерфейс javax.servlet.http.HttpSessionListener, получают уведомления о создании и уничтожении сессий.
java
Для использования слушателя необходимо зарегистрировать его в дескрипторе развертывания (web.xml) или с помощью аннотаций (@WebListener):
Регистрация в web.xml:
xml
Регистрация с помощью @WebListener (начиная с Servlet 3.0):
java
Внутри метода sessionDestroyed можно получить доступ к объектам, хранящимся в сессии (аттрибутам), и уведомить их о завершении сессии, вызвав специфический метод на этих объектах, если они были спроектированы для обработки такого уведомления.
Если объект сам должен знать, когда его сессия завершилась, он может реализовывать интерфейс javax.servlet.http.HttpSessionBindingListener. Объекты этого типа получают уведомления, когда они добавляются или удаляются из сессии.
java
Когда объект MySessionBoundObject добавляется в сессию (session.setAttribute("myObjectKey", myObject)), вызывается valueBound. Когда сессия уничтожается или объект удаляется из сессии (session.removeAttribute("myObjectKey")), вызывается valueUnbound. Таким образом, valueUnbound может служить уведомлением для самого объекта о завершении его связанной сессии.