You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by db...@apache.org on 2011/03/04 00:23:12 UTC

svn commit: r1076878 - in /openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb: assembler/classic/Assembler.java config/RemoteServer.java core/timer/EjbTimerServiceImpl.java

Author: dblevins
Date: Thu Mar  3 23:23:12 2011
New Revision: 1076878

URL: http://svn.apache.org/viewvc?rev=1076878&view=rev
Log:
Shutdown the EjbTimerServiceImpl on Assembler.destroy() to prevent the server from hanging on shutdown when timers are used.

Modified:
    openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
    openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/RemoteServer.java
    openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/timer/EjbTimerServiceImpl.java

Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java?rev=1076878&r1=1076877&r2=1076878&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java Thu Mar  3 23:23:12 2011
@@ -89,6 +89,7 @@ import org.apache.openejb.core.transacti
 import org.apache.openejb.core.transaction.TransactionPolicyFactory;
 import org.apache.openejb.core.transaction.TransactionType;
 import org.apache.openejb.javaagent.Agent;
+import org.apache.openejb.jee.sun.Default;
 import org.apache.openejb.loader.Options;
 import org.apache.openejb.loader.SystemInstance;
 import org.apache.openejb.persistence.JtaEntityManagerRegistry;
@@ -823,6 +824,13 @@ public class Assembler extends Assembler
     }
 
     public void destroy() {
+
+        try {
+            EjbTimerServiceImpl.shutdown();
+        } catch (Exception e) {
+            logger.warning("Unable to shutdown scheduler", e);
+        }
+
         logger.debug("Undeploying Applications");
         Assembler assembler = this;
         for (AppInfo appInfo : assembler.getDeployedApplications()) {

Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/RemoteServer.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/RemoteServer.java?rev=1076878&r1=1076877&r2=1076878&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/RemoteServer.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/RemoteServer.java Thu Mar  3 23:23:12 2011
@@ -135,6 +135,7 @@ public class RemoteServer {
                     }
                 } else {
                     File bin = new File(home, "bin");
+                    File tlib = new File(home, "lib");
                     File bootstrapJar = new File(bin, "bootstrap.jar");
                     File juliJar = new File(bin, "tomcat-juli.jar");
                     File commonsLoggingJar = new File(bin, "commons-logging-api.jar");
@@ -164,6 +165,7 @@ public class RemoteServer {
                                 "-Djava.endorsed.dirs=" + endorsed.getAbsolutePath(),
                                 "-Dcatalina.base=" + home.getAbsolutePath(),
                                 "-Dcatalina.home=" + home.getAbsolutePath(),
+                                "-Dcatalina.ext.dirs=" + tlib.getAbsolutePath(),
                                 "-Dopenejb.servicemanager.enabled=" + Boolean.getBoolean("openejb.servicemanager.enabled"),
 
                                 "-classpath", bootstrapJar.getAbsolutePath() + ":" + juliJar.getAbsolutePath() + ":"+ commonsLoggingJar.getAbsolutePath(),
@@ -184,6 +186,7 @@ public class RemoteServer {
                                 "-Djava.endorsed.dirs=" + endorsed.getAbsolutePath(),
                                 "-Dcatalina.base=" + home.getAbsolutePath(),
                                 "-Dcatalina.home=" + home.getAbsolutePath(),
+                                "-Dcatalina.ext.dirs=" + tlib.getAbsolutePath(),
                                 "-Dopenejb.servicemanager.enabled=" + Boolean.getBoolean("openejb.servicemanager.enabled"),
 
                                 "-classpath", bootstrapJar.getAbsolutePath() + ":" + juliJar.getAbsolutePath() + ":" + commonsLoggingJar.getAbsolutePath(),

Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/timer/EjbTimerServiceImpl.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/timer/EjbTimerServiceImpl.java?rev=1076878&r1=1076877&r2=1076878&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/timer/EjbTimerServiceImpl.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/timer/EjbTimerServiceImpl.java Thu Mar  3 23:23:12 2011
@@ -103,6 +103,16 @@ public class EjbTimerServiceImpl impleme
         return scheduler;
     }
 
+    public static void shutdown() {
+
+        Scheduler scheduler = SystemInstance.get().getComponent(Scheduler.class);
+        if (scheduler != null) try {
+            scheduler.shutdown();
+        } catch (SchedulerException e) {
+            throw new RuntimeException("Unable to shutdown scheduler", e);
+        }
+
+    }
     public void start() throws TimerStoreException {
          // load saved timers
         Collection<TimerData> timerDatas = timerStore.loadTimers(this, (String)deployment.getDeploymentID());