The difference between HttpSessionAttributeListener and HttpSessionBindingListener
Maria Tan
Greenhorn
Joined: Jun 24, 2002
Posts: 25
posted
0
Hello: I am confusing about these two listeners. I am just wondering if you may help me. Thanks in advance Maria
Kyle Tang
Ranch Hand
Joined: Aug 22, 2002
Posts: 78
posted
0
HttpSessionBindingListener is implemented by session attributes. HttpSessionAttributeListener instance is created by Web-Container, based on <listern> element in web.xml. For each <listern-class>, one listern instance is created. Now you can see, if your session has 3 attributes, each of them implements HttpSessionBindingListener, you got 3 ***Binding listeners. But if you only define one <listener-class> in web.xml, you only get one ***Attribute listener.
another important difference, HttpSessionAttributeListener monitors ALL Sessions in the web-app, whenver any session has an attribute added/removed/replace, the listener got notified. HttpSessionBingListener only cares about itself. If itself is added into or removed from a session, it is notified.
where class MySessionAttributeListener implements HttpSessionAttributeListener interface. My qustion is: When we access the TestServlet from a browser, which listener classes will be notified by session.setAttribute("countObject", countObject) statement? (A) MySessionAttributeListener (B) MyBindingListener (C) Both listeners(MySessionAttributeListener and MyBindingListener) Thanks in advance Thambi
Kyle Tang
Ranch Hand
Joined: Aug 22, 2002
Posts: 78
posted
0
both
Daniel Roach
Greenhorn
Joined: Mar 12, 2002
Posts: 10
posted
0
Originally posted by Kyle Tang: both
Kylie why is it both and not just the class specified in web.xml? cheers Dan
Daniel Roach
Greenhorn
Joined: Mar 12, 2002
Posts: 10
posted
0
oops kyle, sorry about misspelling your name why is it both and not just the class specified in web.xml? cheers
Kyle Tang
Ranch Hand
Joined: Aug 22, 2002
Posts: 78
posted
0
that is by definition of these 2 listeners. there is no reason why only one of them get notified, and the other get blocked. your web-container will follow what the spec says. if the attribute that is added to a session implements HttpSessionBindingListener, it will get notified. In the mean time, if there is a HttpSessionAttributeListener defined in web.xml, that listener instance will also get notified. please refer to my earlier reply to the original post.