[jboss-svn-commits] JBL Code SVN: r22759 - in labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/src/org/jboss/soa/esb/listeners: lifecycle and 1 other directory.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Sun Sep 14 11:12:37 EDT 2008


Author: tcunning
Date: 2008-09-14 11:12:36 -0400 (Sun, 14 Sep 2008)
New Revision: 22759

Modified:
   labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/src/org/jboss/soa/esb/listeners/config/JBoss4ESBDeployment.java
   labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/src/org/jboss/soa/esb/listeners/lifecycle/LifecycleController.java
Log:
JBESB-2038
Make sure we undeploy all MBeans relating to a deployment before we
deploy new ones.    This was causing duplicate entries upon hot deploy 
where names of service name or service category changed.


Modified: labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/src/org/jboss/soa/esb/listeners/config/JBoss4ESBDeployment.java
===================================================================
--- labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/src/org/jboss/soa/esb/listeners/config/JBoss4ESBDeployment.java	2008-09-14 15:09:47 UTC (rev 22758)
+++ labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/src/org/jboss/soa/esb/listeners/config/JBoss4ESBDeployment.java	2008-09-14 15:12:36 UTC (rev 22759)
@@ -22,9 +22,18 @@
 package org.jboss.soa.esb.listeners.config;
 
 import java.util.List;
+import java.util.Set;
 
+import javax.management.InstanceNotFoundException;
+import javax.management.MBeanRegistrationException;
+import javax.management.MBeanServer;
+import javax.management.MalformedObjectNameException;
+import javax.management.ObjectName;
+
 import org.jboss.internal.soa.esb.publish.ContractReferencePublisher;
+import org.jboss.mx.util.MBeanServerLocator;
 import org.jboss.soa.esb.lifecycle.LifecycleResourceManager;
+import org.jboss.soa.esb.listeners.ListenerTagNames;
 import org.jboss.soa.esb.listeners.lifecycle.ManagedLifecycleController;
 import org.jboss.system.ServiceMBeanSupport;
 
@@ -96,6 +105,7 @@
       {
          Thread.currentThread().setContextClassLoader(classloader);
          LifecycleResourceManager.getSingleton().associateDeployment(deploymentName) ;
+         unregisterMBeans(deploymentName);
          controller = Configuration.create(jbossEsbXml, serviceName, publishers);
          controller.start();
       }
@@ -106,6 +116,33 @@
 
    }
 
+   /**
+    * Unregisters all MBeans that may have been associated with a previous version of the ESB deployment.
+    * 
+    * @param deploymentName name of the deployment (ex:  jbossesb.esb)
+    * @throws Exception
+    */
+   private void unregisterMBeans(String deployment) throws Exception {
+	   MBeanServer mbeanServer = MBeanServerLocator.locateJBoss();
+	   Set<ObjectName> listenerControllers = mbeanServer.queryNames(new ObjectName("jboss.esb:*"), null);
+	   for (ObjectName controller : listenerControllers) {
+		   if (controller.toString().indexOf("deployment="+deployment)>0) {
+			   if ((controller.toString().indexOf("listener-name=")>0) || (controller.toString().indexOf("gateway-name=")>0)) {
+				   mbeanServer.unregisterMBean(controller);											
+			   }
+		   }
+	   }
+	   
+	   Set<ObjectName> counterControllers = mbeanServer.queryNames(new ObjectName("jboss.esb:*"), null);
+	   	for (ObjectName controller : counterControllers) {
+	   		if (controller.toString().indexOf("category=MessageCounter," + ListenerTagNames.DEPLOYMENT_NAME_TAG + "=" + deploymentName)>0) {
+	   			if (controller.toString().indexOf(ListenerTagNames.SERVICE_NAME_TAG + "=")>0) {
+	   				mbeanServer.unregisterMBean(controller);											
+	   			}
+	   		}
+		}
+   }
+   
    @Override
    public void stopService() throws Exception
    {

Modified: labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/src/org/jboss/soa/esb/listeners/lifecycle/LifecycleController.java
===================================================================
--- labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/src/org/jboss/soa/esb/listeners/lifecycle/LifecycleController.java	2008-09-14 15:09:47 UTC (rev 22758)
+++ labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/src/org/jboss/soa/esb/listeners/lifecycle/LifecycleController.java	2008-09-14 15:12:36 UTC (rev 22759)
@@ -163,14 +163,25 @@
 			return;
 		}
 		
+		String deployment = null;
+		String listenerName = null;
 		ObjectName listObjectName = null;
 		try {
+			deployment = m_config.getParent().getAttribute("deployment");
+			listenerName = m_config.getName();
+
 			String categoryName = m_config.getAttribute(ListenerTagNames.SERVICE_CATEGORY_NAME_TAG);
 			String serviceName = m_config.getAttribute(ListenerTagNames.SERVICE_NAME_TAG);
-			String listenerName = m_config.getName();
 
 			StringBuffer objectName = new StringBuffer();
+			if (deployment != null) {
+				objectName.append(ListenerTagNames.DEPLOYMENT_NAME_TAG + "=" + deployment);
+			}
+			
 			if (categoryName != null) {
+				if (objectName.length() > 0) {
+					objectName.append(",");
+				}
 				objectName.append(ListenerTagNames.SERVICE_CATEGORY_NAME_TAG + "=" + categoryName);
 			}
 			
@@ -180,7 +191,7 @@
 				}
 				objectName.append(ListenerTagNames.SERVICE_NAME_TAG + "=" + serviceName);
 			}
-			
+
 			if (listenerName != null) {
 				if (objectName.length() > 0) {
 					objectName.append(",");
@@ -195,29 +206,29 @@
 			
 			listObjectName = new ObjectName("jboss.esb:" + objectName.toString());
 		} catch (MalformedObjectNameException e1) {
-			logger.error("", e1);
+			logger.warn("", e1);
 		} catch (NullPointerException e1) {
-			logger.error("", e1);
+			logger.warn("", e1);
 		}
-		
+
 		if (mbeanServer.isRegistered(listObjectName)) {
 	    	try {
 	    		mbeanServer.unregisterMBean(listObjectName);
 			} catch (InstanceNotFoundException e) {
-				logger.error("", e);
+				logger.warn("", e);
 			} catch (MBeanRegistrationException e) {
-				logger.error("", e);
+				logger.warn("", e);
 			}
         }
 		
 	    try {
 	    	mbeanServer.registerMBean(this, listObjectName);
 		} catch (InstanceAlreadyExistsException e) {
-			logger.error("", e);
+			logger.warn("", e);
 		} catch (MBeanRegistrationException e) {
-			logger.error("", e);
+			logger.warn("", e);
 		} catch (NotCompliantMBeanException e) {
-			logger.error("", e);
+			logger.warn("", e);
 		}
 	}
 
@@ -318,7 +329,7 @@
 			try {
 				start();
 			} catch (ManagedLifecycleException e) {
-				logger.error("", e);
+				logger.warn("", e);
 				return "Error invoking " + method + ": " + e.toString();
 			}
 			return "Invoking the " + method + " on the lifecycle.";
@@ -326,7 +337,7 @@
 			try {
 				initialise();
 			} catch (ManagedLifecycleException e) {
-				logger.error("", e);
+				logger.warn("", e);
 				return "Error invoking " + method + ": " + e.toString();
 			}
 			return "Invoking the " + method + " on the lifecycle.";
@@ -334,7 +345,7 @@
 			try {
 				stop();
 			} catch (ManagedLifecycleException e) {
-				logger.error("", e);
+				logger.warn("", e);
 				return "Error invoking " + method + ": " + e.toString();
 			}
 			return "Invoking the " + method + " on the lifecycle.";
@@ -342,7 +353,7 @@
 			try {
 				destroy();
 			} catch (ManagedLifecycleException e) {
-				logger.error("", e);
+				logger.warn("", e);
 				return "Error invoking " + method + ": " + e.toString();
 			}
 			return "Invoking the " + method + " on the lifecycle.";




More information about the jboss-svn-commits mailing list