Ответ 1
Да, это возможно. Вы можете использовать HttpSessionListener
и выполнять задание в методе sessionDestroyed()
,
@WebListener
public class MyHttpSessionListener implements HttpSessionListener {
@Override
public void sessionDestroyed(HttpSessionEvent event) {
// Do here the job.
}
// ...
}
Или вы можете позволить сложному объекту, который был сохранен как атрибут сеанса, реализовать HttpSessionBindingListener
и выполните задание в методе valueUnbound()
.
public class YourComplexObject implements HttpSessionBindingListener {
@Override
public void valueUnbound(HttpSessionBindingEvent event) {
// Do here the job.
}
// ...
}
Он будет вызываться всякий раз, когда объект должен быть удален из сеанса (либо явно с помощью HttpSession#removeAttribute()
, либо с помощью недействительности/истечения сеанса).