When a session expires or is invalidated, or a session attribute gets
removed, etc., HttpSessionBindingListener's valueUnbound callback function
should be fired. 

However, it seems that WebSession's removeAttribute does not support
HttpSessionBindingListener. (I'm referring to the Ignite Web module.)

class WebSession implements HttpSession, Externalizable { 

    /** {@inheritDoc} */ 
    @Override public void removeAttribute(String name) { 
        if (!isValid) 
            throw new IllegalStateException("Call on invalidated session!"); 

        attrs.remove(name); 

        if (updates != null) 
            updates.add(new T2<>(name, null)); 
    } 

... 

Somehow, our application relies on the HttpSessionBindingListener's
valueUnbound callback function getting called to clean up resources. 

Any advice please? 

PS.: 
Tomcat's implementation of HttpSession looks like: 

StandardSession.java 

    protected void removeAttributeInternal(String name, boolean notify) { 
        // Avoid NPE 
        if (name == null) return; 
        // Remove this attribute from our collection 
        Object value = attributes.remove(name); 
        // Do we need to do valueUnbound() and attributeRemoved()
notification? 
        if (!notify || (value == null)) { 
            return; 
        } 
        // Call the valueUnbound() method if necessary 
        HttpSessionBindingEvent event = null; 
        if (value instanceof HttpSessionBindingListener) { 
            event = new HttpSessionBindingEvent(getSession(), name, value); 
            ((HttpSessionBindingListener) value).valueUnbound(event); 
        } 
... 



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

Reply via email to