Author: rmannibucau
Date: Tue May 20 21:29:13 2014
New Revision: 1596420

URL: http://svn.apache.org/r1596420
Log:
OPENEJB-2095 allow JVM lifecycle handling behing EJBContainer

Modified:
    
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/OpenEjbContainer.java
    
tomee/tomee/trunk/container/openejb-junit/src/main/java/org/apache/openejb/junit/jee/statement/ShutingDownStatement.java

Modified: 
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/OpenEjbContainer.java
URL: 
http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/OpenEjbContainer.java?rev=1596420&r1=1596419&r2=1596420&view=diff
==============================================================================
--- 
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/OpenEjbContainer.java
 (original)
+++ 
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/OpenEjbContainer.java
 Tue May 20 21:29:13 2014
@@ -108,6 +108,8 @@ public final class OpenEjbContainer exte
     }
 
     public static final String OPENEJB_EMBEDDED_REMOTABLE = 
"openejb.embedded.remotable";
+    public static final String OPENEJB_EJBCONTAINER_CLOSE = 
"openejb.ejbcontainer.close";
+    public static final String OPENEJB_EJBCONTAINER_CLOSE_SINGLE = 
"single-jvm";
 
     private static OpenEjbContainer instance;
     private static Logger logger = null; // initialized lazily to get the 
logging config from properties
@@ -141,6 +143,17 @@ public final class OpenEjbContainer exte
 
     @Override
     public void close() {
+        if (isSingleClose()) {
+            return;
+        }
+        doClose();
+    }
+
+    private static boolean isSingleClose() {
+        return 
OPENEJB_EJBCONTAINER_CLOSE_SINGLE.equals(SystemInstance.get().getProperty(OPENEJB_EJBCONTAINER_CLOSE,
 "by-invocation"));
+    }
+
+    private void doClose() {
         if (serviceManager != null) {
             serviceManager.stop();
         }
@@ -212,7 +225,9 @@ public final class OpenEjbContainer exte
             }
 
             if (instance != null || OpenEJB.isInitialized()) {
-                logger().info("EJBContainer already initialized.  Call 
ejbContainer.close() to allow reinitialization");
+                if (!isSingleClose()) {
+                    logger().info("EJBContainer already initialized.  Call 
ejbContainer.close() to allow reinitialization");
+                }
                 return instance;
             }
 
@@ -321,7 +336,16 @@ public final class OpenEjbContainer exte
                 }
 
 
-                return instance = new OpenEjbContainer(map, appContext);
+                final OpenEjbContainer openEjbContainer = instance = new 
OpenEjbContainer(map, appContext);
+                if (isSingleClose()) {
+                    Runtime.getRuntime().addShutdownHook(new Thread() {
+                        @Override
+                        public void run() {
+                            instance.doClose();
+                        }
+                    });
+                }
+                return openEjbContainer;
 
             } catch (final OpenEJBException e) {
 

Modified: 
tomee/tomee/trunk/container/openejb-junit/src/main/java/org/apache/openejb/junit/jee/statement/ShutingDownStatement.java
URL: 
http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-junit/src/main/java/org/apache/openejb/junit/jee/statement/ShutingDownStatement.java?rev=1596420&r1=1596419&r2=1596420&view=diff
==============================================================================
--- 
tomee/tomee/trunk/container/openejb-junit/src/main/java/org/apache/openejb/junit/jee/statement/ShutingDownStatement.java
 (original)
+++ 
tomee/tomee/trunk/container/openejb-junit/src/main/java/org/apache/openejb/junit/jee/statement/ShutingDownStatement.java
 Tue May 20 21:29:13 2014
@@ -16,7 +16,6 @@
  */
 package org.apache.openejb.junit.jee.statement;
 
-import org.apache.openejb.OpenEJB;
 import org.junit.runners.model.Statement;
 
 import javax.ejb.embeddable.EJBContainer;
@@ -34,7 +33,6 @@ public class ShutingDownStatement extend
         final EJBContainer container = startingStatement.getContainer();
         if (container != null) {
             container.close();
-            OpenEJB.destroy();
         }
     }
 }


Reply via email to