Получение уведомления при ограничении / неограничении сеанса HTTP

Как я могу получить уведомление, когда мой объект получает ограниченный / неограниченный объект сеанса HTTP.

1 ответов


пусть класс объекта реализует HttpSessionBindingListener.

public class YourObject implements HttpSessionBindingListener {

    @Override
    public void valueBound(HttpSessionBindingEvent event) {
        // The current instance has been bound to the HttpSession.
    }

    @Override
    public void valueUnbound(HttpSessionBindingEvent event) {
        // The current instance has been unbound from the HttpSession.
    }

}

если у вас нет контроля над кодом класса объекта и, следовательно, вы не можете изменить его код, альтернативой является реализация HttpSessionAttributeListener.

@WebListener
public class YourObjectSessionAttributeListener implements HttpSessionAttributeListener {

    @Override
    public void attributeAdded(HttpSessionBindingEvent event) {
        if (event.getValue() instanceof YourObject) {
            // An instance of YourObject has been bound to the session.
        }
    }

    @Override
    public void attributeRemoved(HttpSessionBindingEvent event) {
        if (event.getValue() instanceof YourObject) {
            // An instance of YourObject has been unbound from the session.
        }
    }

    @Override
    public void attributeReplaced(HttpSessionBindingEvent event) {
        if (event.getValue() instanceof YourObject) {
            // An instance of YourObject has been replaced in the session.
        }
    }

}

Примечание: когда вы все еще на сервлете 2.5 или старше, замените @WebListener by a <listener> запись конфигурации в web.xml.