[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