6

How can i get notified when my Object gets bounded/unbounded to a session object of HTTP.

BalusC
  • 1,082,665
  • 372
  • 3,610
  • 3,555
ramoh
  • 153
  • 3
  • 15

1 Answers1

7

Let the object's class implement 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.
    }

}

If you have no control over the object's class code and thus you can't change its code, then an alternative is to implement 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.
        }
    }

}

Note: when you're still on Servlet 2.5 or older, replace @WebListener by a <listener> configuration entry in web.xml.

BalusC
  • 1,082,665
  • 372
  • 3,610
  • 3,555