You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by rm...@apache.org on 2013/04/24 10:37:14 UTC

svn commit: r1471291 - /tomee/tomee/trunk/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/EndWebBeansListener.java

Author: rmannibucau
Date: Wed Apr 24 08:37:13 2013
New Revision: 1471291

URL: http://svn.apache.org/r1471291
Log:
TOMEE-907 trying to ensure the session context exists when destroying it

Modified:
    tomee/tomee/trunk/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/EndWebBeansListener.java

Modified: tomee/tomee/trunk/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/EndWebBeansListener.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/EndWebBeansListener.java?rev=1471291&r1=1471290&r2=1471291&view=diff
==============================================================================
--- tomee/tomee/trunk/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/EndWebBeansListener.java (original)
+++ tomee/tomee/trunk/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/EndWebBeansListener.java Wed Apr 24 08:37:13 2013
@@ -132,7 +132,6 @@ public class EndWebBeansListener impleme
                 elStore.destroyELContextStore();
             }
 
-
             webBeansContext.getContextsService().endContext(RequestScoped.class, event);
             if (webBeansContext instanceof WebappWebBeansContext) { // end after child
                 ((WebappWebBeansContext) webBeansContext).getParent().getContextsService().endContext(RequestScoped.class, event);
@@ -172,9 +171,12 @@ public class EndWebBeansListener impleme
             logger.debug("Destroying a session with session id : [{0}]", event.getSession().getId());
         }
 
-        this.webBeansContext.getContextsService().endContext(SessionScoped.class, event.getSession());
-        if (webBeansContext instanceof WebappWebBeansContext) { // end after child
-            ((WebappWebBeansContext) webBeansContext).getParent().getContextsService().endContext(SessionScoped.class, event.getSession());
+        // ensure session ThreadLocal is set
+        webBeansContext.getContextsService().startContext(SessionScoped.class, event.getSession());
+
+        webBeansContext.getContextsService().endContext(SessionScoped.class, event.getSession());
+        if (WebappWebBeansContext.class.isInstance(webBeansContext)) { // end after child
+            WebappWebBeansContext.class.cast(webBeansContext).getParent().getContextsService().endContext(SessionScoped.class, event.getSession());
         }
 
         ConversationManager conversationManager = webBeansContext.getConversationManager();