[jboss-svn-commits] JBL Code SVN: r14733 - in labs/jbossesb/trunk/product/rosetta/src/org/jboss: soa/esb/couriers and 4 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed Aug 29 11:55:12 EDT 2007


Author: kevin.conner at jboss.com
Date: 2007-08-29 11:55:12 -0400 (Wed, 29 Aug 2007)
New Revision: 14733

Added:
   labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/util/LifecycleResourceUtil.java
Modified:
   labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/rosetta/pooling/JmsConnectionPoolContainer.java
   labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/couriers/CourierFactory.java
   labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/StandAloneBootStrapper.java
   labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/config/JBoss4ESBDeployer.java
   labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/lifecycle/ManagedLifecycleController.java
Log:
tidy up resource cleanup: JBESB-850

Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/rosetta/pooling/JmsConnectionPoolContainer.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/rosetta/pooling/JmsConnectionPoolContainer.java	2007-08-29 14:33:39 UTC (rev 14732)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/rosetta/pooling/JmsConnectionPoolContainer.java	2007-08-29 15:55:12 UTC (rev 14733)
@@ -31,6 +31,7 @@
 
 import org.jboss.soa.esb.addressing.eprs.JMSEpr;
 import org.jboss.soa.esb.lifecycle.LifecycleIdentity;
+import org.jboss.soa.esb.util.LifecycleResourceUtil;
 import org.apache.log4j.Logger;
 
 /**
@@ -52,18 +53,7 @@
     static {
         poolMaps = new HashMap<String, Map<Map<String, String>, JmsConnectionPool>>();
         logger.info("JMS Connection Pool successfully created.");
-
-        Thread shutdownHook = new Thread() {
-            public void run() {
-                try {
-                    removeAllPools();
-                    logger.info("JMS Connection Pool successfully cleaned up.");
-                } catch (JMSException e) {
-                    logger.error("JMS Connection Pool shutdown failed.", e);
-                }
-            }
-        };
-        Runtime.getRuntime().addShutdownHook(shutdownHook);
+        LifecycleResourceUtil.activateHook() ;
     }
 
     /**

Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/couriers/CourierFactory.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/couriers/CourierFactory.java	2007-08-29 14:33:39 UTC (rev 14732)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/couriers/CourierFactory.java	2007-08-29 15:55:12 UTC (rev 14733)
@@ -36,6 +36,7 @@
 import org.jboss.soa.esb.addressing.EPR;
 import org.jboss.soa.esb.addressing.MalformedEPRException;
 import org.jboss.soa.esb.lifecycle.LifecycleIdentity;
+import org.jboss.soa.esb.util.LifecycleResourceUtil;
 
 public class CourierFactory
 {
@@ -57,6 +58,7 @@
     static
     {
         lifecycleCouriers.put(null, new HashMap<TwoWayCourier, Exception>()) ;
+        LifecycleResourceUtil.activateHook() ;
     }
 	
 	// protected default constructor

Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/StandAloneBootStrapper.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/StandAloneBootStrapper.java	2007-08-29 14:33:39 UTC (rev 14732)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/StandAloneBootStrapper.java	2007-08-29 15:55:12 UTC (rev 14733)
@@ -24,14 +24,13 @@
 
 import java.io.File;
 
-import javax.jms.JMSException;
 
 import org.apache.log4j.Logger;
 import org.apache.log4j.xml.DOMConfigurator;
-import org.jboss.internal.soa.esb.rosetta.pooling.JmsConnectionPoolContainer;
 import org.jboss.internal.soa.esb.util.Exit;
 import org.jboss.soa.esb.ConfigurationException;
 import org.jboss.soa.esb.listeners.config.ConfigurationController;
+import org.jboss.soa.esb.util.LifecycleResourceUtil;
 
 public class StandAloneBootStrapper
 {
@@ -39,7 +38,6 @@
 
     private static Logger _logger = Logger
 			.getLogger(StandAloneBootStrapper.class);
-    private static Exit exit;
 
     public static void main (String[] args) throws Exception
 	{
@@ -108,6 +106,7 @@
                                 boot.requestEnd() ;
                             }
                         } ;
+                        LifecycleResourceUtil.deactivateHook() ;
                         Runtime.getRuntime().addShutdownHook(hook) ;
 			if (lSecondsToRun < 5) lSecondsToRun = 5;
 			long lRunTo = System.currentTimeMillis() + 1000 * lSecondsToRun;
@@ -174,15 +173,10 @@
 	public void requestEnd ()
 	{
 		if (_confController != null)
-        {
-            _confController.requestEnd();
-            _confController.waitUntilEnded() ;
-        }
-        try {
-            JmsConnectionPoolContainer.removeAllPools();
-        } catch (JMSException e) {
-            e.printStackTrace();
-        }
+                {
+                    _confController.requestEnd();
+                    _confController.waitUntilEnded() ;
+                }
 		runAfter();
 	} // ________________________________
 

Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/config/JBoss4ESBDeployer.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/config/JBoss4ESBDeployer.java	2007-08-29 14:33:39 UTC (rev 14732)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/config/JBoss4ESBDeployer.java	2007-08-29 15:55:12 UTC (rev 14733)
@@ -39,6 +39,7 @@
 import org.jboss.mx.loading.LoaderRepositoryFactory;
 import org.jboss.mx.util.MBeanProxyExt;
 import org.jboss.mx.util.ObjectNameConverter;
+import org.jboss.soa.esb.util.LifecycleResourceUtil;
 import org.jboss.system.ServiceControllerMBean;
 import org.w3c.dom.Element;
 
@@ -119,6 +120,7 @@
                       ServiceControllerMBean.OBJECT_NAME, server);
 
       mainDeployer.addDeployer(this);
+      LifecycleResourceUtil.deactivateHook() ;
    }
 
 

Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/lifecycle/ManagedLifecycleController.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/lifecycle/ManagedLifecycleController.java	2007-08-29 14:33:39 UTC (rev 14732)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/lifecycle/ManagedLifecycleController.java	2007-08-29 15:55:12 UTC (rev 14733)
@@ -23,14 +23,11 @@
 
 import java.util.Collection;
 
-import javax.jms.JMSException;
-
-import org.jboss.internal.soa.esb.rosetta.pooling.JmsConnectionPoolContainer;
 import org.jboss.soa.esb.couriers.CourierFactory;
-import org.jboss.soa.esb.helpers.NamingContext;
 import org.jboss.soa.esb.lifecycle.LifecycleIdentity;
 import org.jboss.soa.esb.schedule.ScheduleProvider;
 import org.jboss.soa.esb.schedule.SchedulingException;
+import org.jboss.soa.esb.util.LifecycleResourceUtil;
 import org.apache.log4j.Logger;
 
 /**
@@ -254,7 +251,7 @@
             throw mle;
          }
       }
-      cleanupResources() ;
+      LifecycleResourceUtil.cleanupResources() ;
    }
 
    /**
@@ -295,7 +292,7 @@
          {
          } // Ignore exception
       }
-      cleanupResources() ;
+      LifecycleResourceUtil.cleanupResources() ;
    }
    
    /**
@@ -317,27 +314,6 @@
            destroyInstances(numInstances-1) ;
        }
    }
-   
-   /**
-    * Cleanup resources associated with this lifecycle controller.
-    */
-   private void cleanupResources()
-   {
-       CourierFactory.releaseCouriers() ;
-       CourierFactory.destroyLifecycleIdentityMap(lifecycleIdentity) ;
-       try
-       {
-          JmsConnectionPoolContainer.removeAllPools() ;
-       }
-       catch (final JMSException jmse)
-       {
-           if (logger.isDebugEnabled())
-           {
-               logger.debug("Unexpected exception clearing JMS pools", jmse) ;
-           }
-       }
-       NamingContext.closeAllContexts();
-   }
 
     public void setScheduleProvider(ScheduleProvider scheduleProvider) {
         this.scheduleProvider = scheduleProvider;

Added: labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/util/LifecycleResourceUtil.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/util/LifecycleResourceUtil.java	                        (rev 0)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/util/LifecycleResourceUtil.java	2007-08-29 15:55:12 UTC (rev 14733)
@@ -0,0 +1,117 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2006, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.soa.esb.util;
+
+import javax.jms.JMSException;
+
+import org.apache.log4j.Logger;
+import org.jboss.internal.soa.esb.rosetta.pooling.JmsConnectionPoolContainer;
+import org.jboss.soa.esb.couriers.CourierFactory;
+import org.jboss.soa.esb.helpers.NamingContext;
+import org.jboss.soa.esb.lifecycle.LifecycleIdentity;
+
+/**
+ * Utility methods to manage lifecycle resources.
+ * 
+ * @author kevin
+ */
+public class LifecycleResourceUtil
+{
+    /**
+     * The logger for this class.
+     */
+    private static Logger logger = Logger.getLogger(LifecycleResourceUtil.class);
+    
+    /**
+     * Cleanup hook for cleaning non-esb lifecycle resources.
+     */
+    private static volatile Thread cleanupHook = new Thread() {
+        public void run()
+        {
+            cleanupResources() ;
+        }
+    } ;
+    
+    static
+    {
+        // Initialise the shutdown hook in case we are not in an ESB.
+        Runtime.getRuntime().addShutdownHook(cleanupHook) ;
+    }
+    
+    /**
+     * Cleanup resources associated with the current lifecycle context.
+     */
+    public static void cleanupResources()
+    {
+        final String lifecycleIdentity = LifecycleIdentity.getSingleton().getLifecycleIdentity() ;
+        if (logger.isDebugEnabled())
+        {
+            if (lifecycleIdentity != null)
+            {
+                logger.debug("Cleaning up resources for lifecycle identity: " + lifecycleIdentity) ;
+            }
+            else
+            {
+                logger.debug("Cleaning up non-esb lifecycle resources") ;
+            }
+        }
+        
+        CourierFactory.releaseCouriers() ;
+        CourierFactory.destroyLifecycleIdentityMap(lifecycleIdentity) ;
+        try
+        {
+           JmsConnectionPoolContainer.removeAllPools() ;
+        }
+        catch (final JMSException jmse)
+        {
+            if (logger.isDebugEnabled())
+            {
+                logger.debug("Unexpected exception clearing JMS pools", jmse) ;
+            }
+        }
+        NamingContext.closeAllContexts();
+    }
+    
+    /**
+     * Handle the activiation of the cleanup hook.
+     */
+    public static void activateHook()
+    {
+        /*
+         *  The real activation is handled in the static initialiser so
+         *  that it occurs only once.
+         */
+    }
+    
+    /**
+     * Deactivate the cleanup hook.
+     */
+    public static void deactivateHook()
+    {
+        final Thread hook = cleanupHook ;
+        if (hook != null)
+        {
+            cleanupHook = null ;
+            Runtime.getRuntime().removeShutdownHook(hook) ;
+        }
+    }
+}


Property changes on: labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/util/LifecycleResourceUtil.java
___________________________________________________________________
Name: svn:keywords
   + Rev Date
Name: svn:eol-style
   + native




More information about the jboss-svn-commits mailing list