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(); } } }