[jbosscache-commits] JBoss Cache SVN: r4681 - core/trunk/src/main/java/org/jboss/cache.

jbosscache-commits at lists.jboss.org jbosscache-commits at lists.jboss.org
Wed Oct 24 12:09:31 EDT 2007


Author: manik.surtani at jboss.com
Date: 2007-10-24 12:09:31 -0400 (Wed, 24 Oct 2007)
New Revision: 4681

Modified:
   core/trunk/src/main/java/org/jboss/cache/CacheImpl.java
Log:
Conditional registration of VM shutdown hook

Modified: core/trunk/src/main/java/org/jboss/cache/CacheImpl.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/CacheImpl.java	2007-10-24 14:42:44 UTC (rev 4680)
+++ core/trunk/src/main/java/org/jboss/cache/CacheImpl.java	2007-10-24 16:09:31 UTC (rev 4681)
@@ -67,6 +67,7 @@
 import org.jgroups.util.RspList;
 import org.jgroups.util.Util;
 
+import javax.management.MBeanServerFactory;
 import javax.transaction.Status;
 import javax.transaction.SystemException;
 import javax.transaction.Transaction;
@@ -830,22 +831,36 @@
 
       notifier.notifyCacheStarted(this, getInvocationContext());
 
-      // install a VM shutdown hook
-      Thread shutdownHook = new Thread()
-      {
-         public void run()
-         {
-            CacheImpl.this.stop();
-         }
-      };
+      addShutdownHook();
 
-      Runtime.getRuntime().addShutdownHook(shutdownHook);
-
       log.info("JBoss Cache version: " + getVersion());
 
       cacheStatus = CacheStatus.STARTED;
    }
 
+   private void addShutdownHook()
+   {
+      ArrayList al = MBeanServerFactory.findMBeanServer(null);
+      if (al.size() == 0)
+      {
+         // the only MBean server is the system (JDK) server.  So we need to register a shutdown hook.
+         // install a VM shutdown hook
+         Thread shutdownHook = new Thread()
+         {
+            public void run()
+            {
+               CacheImpl.this.stop();
+            }
+         };
+
+      Runtime.getRuntime().addShutdownHook(shutdownHook);
+      }
+      else
+      {
+         log.trace("Running in an MBeanServer environment.  Not registering a shutdown hook with the VM as the MBeanServer will handle lifecycle.");
+      }
+   }
+
    /**
     * Lifecycle method.
     */




More information about the jbosscache-commits mailing list