Hi Val,

The mechanism is similar to the implementation of invalidate() of the
WebSessionV2 class. The {@link #invalidate()} action is delegated to the
genuine session. Similarly, actions setAttribute(), removeAttribute(), and
setMaxInactiveInterval() should be delegated to the genuine session. This
way, the web container can do to the session whatever it promises to do,
such as calling the HttpSessionBindingListener's valueUnbound callback
function, etc.

If you look at the HttpSession interface, this is the whole list of APIs
concerned:

* setAttribute()
* removeAttribute()
* setMaxInactiveInterval()
* invalidate()
* putValue()

And putValue() has been covered by setAttribute() in WebSessionV2

There are two main reasons that WebSessionV2 should delegate to the genuine
session:
1. Avoid re-inventing the wheel. The web container has already implemented
the related APIs.
2. WebSessionV2 is not visible to the web container. When the web container
decides to expire the session, it will not reach the WebSessionV2
implementation. And this is exactly where I had the problem in the first
place.

By the way, thanks for pointing out removing attributes, I've made another
pull request on GitHub:
https://github.com/apache/ignite/pull/2243

Also I can't assign the ticket to myself because of lack of permission:
https://issues.apache.org/jira/browse/IGNITE-5607




--
View this message in context: 
http://apache-ignite-developers.2346864.n4.nabble.com/It-seems-WebSession-s-removeAttribute-does-not-support-HttpSessionBindingListener-tp19184p19575.html
Sent from the Apache Ignite Developers mailing list archive at Nabble.com.

Reply via email to