You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by xu...@apache.org on 2011/02/18 03:13:30 UTC

svn commit: r1071863 - /geronimo/server/branches/3.0-M2/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/ThreadSingletonServiceAdapter.java

Author: xuhaihong
Date: Fri Feb 18 02:13:30 2011
New Revision: 1071863

URL: http://svn.apache.org/viewvc?rev=1071863&view=rev
Log:
Refract codes a little to avoid creating a unused WebBeansContext, as this class really takes a lot of time even for a new instance

Modified:
    geronimo/server/branches/3.0-M2/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/ThreadSingletonServiceAdapter.java

Modified: geronimo/server/branches/3.0-M2/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/ThreadSingletonServiceAdapter.java
URL: http://svn.apache.org/viewvc/geronimo/server/branches/3.0-M2/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/ThreadSingletonServiceAdapter.java?rev=1071863&r1=1071862&r2=1071863&view=diff
==============================================================================
--- geronimo/server/branches/3.0-M2/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/ThreadSingletonServiceAdapter.java (original)
+++ geronimo/server/branches/3.0-M2/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/ThreadSingletonServiceAdapter.java Fri Feb 18 02:13:30 2011
@@ -48,28 +48,31 @@ public class ThreadSingletonServiceAdapt
     public void initialize(StartupObject startupObject) {
         //share owb singletons
         WebBeansContext webBeansContext = startupObject.getAppContext().get(WebBeansContext.class);
-        if (webBeansContext == null) {
-            webBeansContext = new WebBeansContext();
-            Object old = contextEntered(webBeansContext);
-            try {
-                if (old == null) {
+        if (webBeansContext != null) {
+            return;
+        }
+        Object old = contextEntered(null);
+        try {
+            if (old == null) {
+                webBeansContext = new WebBeansContext();
+                contextEntered(webBeansContext);
+                try {
                     //not embedded. Are we the first ejb module to try this?
                     startupObject.getAppContext().set(WebBeansContext.class, webBeansContext);
                     setConfiguration(webBeansContext.getOpenWebBeansConfiguration());
-                    try {
-                        webBeansContext.getService(ContainerLifecycle.class).startApplication(startupObject);
-                    } catch (Exception e) {
-                        throw new RuntimeException("couldn't start owb context", e);
-                    }
-                    // an existing OWBConfiguration will have already been initialized
-                } else {
-                    startupObject.getAppContext().set(WebBeansContext.class, (WebBeansContext) old);
+                    webBeansContext.getService(ContainerLifecycle.class).startApplication(startupObject);
+                } catch (Exception e) {
+                    throw new RuntimeException("couldn't start owb context", e);
+                } finally {
+                    contextExited(null);
                 }
-            } finally {
-                contextExited(old);
+                // an existing OWBConfiguration will have already been initialized
+            } else {
+                startupObject.getAppContext().set(WebBeansContext.class, (WebBeansContext) old);
             }
+        } finally {
+            contextExited(old);
         }
-
     }
 
     private void setConfiguration(OpenWebBeansConfiguration configuration) {