Author: gnodet
Date: Mon Oct 23 01:29:48 2006
New Revision: 466946

URL: http://svn.apache.org/viewvc?view=rev&rev=466946
Log:
Fix mbeans unregistration (endpoints and SAs) at server shutdown

Modified:
    
incubator/servicemix/branches/servicemix-3.0/servicemix-core/src/main/java/org/apache/servicemix/jbi/framework/EndpointRegistry.java
    
incubator/servicemix/branches/servicemix-3.0/servicemix-core/src/main/java/org/apache/servicemix/jbi/framework/ServiceAssemblyRegistry.java
    
incubator/servicemix/branches/servicemix-3.0/servicemix-core/src/main/java/org/apache/servicemix/jbi/servicedesc/ExternalEndpoint.java

Modified: 
incubator/servicemix/branches/servicemix-3.0/servicemix-core/src/main/java/org/apache/servicemix/jbi/framework/EndpointRegistry.java
URL: 
http://svn.apache.org/viewvc/incubator/servicemix/branches/servicemix-3.0/servicemix-core/src/main/java/org/apache/servicemix/jbi/framework/EndpointRegistry.java?view=diff&rev=466946&r1=466945&r2=466946
==============================================================================
--- 
incubator/servicemix/branches/servicemix-3.0/servicemix-core/src/main/java/org/apache/servicemix/jbi/framework/EndpointRegistry.java
 (original)
+++ 
incubator/servicemix/branches/servicemix-3.0/servicemix-core/src/main/java/org/apache/servicemix/jbi/framework/EndpointRegistry.java
 Mon Oct 23 01:29:48 2006
@@ -197,7 +197,7 @@
         } else {
             String key = getKey(serviceEndpoint);
             internalEndpoints.remove(key);
-            unregisterEndpoint(key);
+            unregisterEndpoint(serviceEndpoint);
         }
         fireEvent(serviceEndpoint, 
EndpointEvent.INTERNAL_ENDPOINT_UNREGISTERED);
     }
@@ -369,8 +369,8 @@
      * @param externalEndpoint the external endpoint to be deregistered; must 
be non-null.
      */
     public void unregisterExternalEndpoint(ComponentNameSpace cns, 
ServiceEndpoint externalEndpoint) {
-        externalEndpoints.remove(getKey(externalEndpoint));
-        unregisterEndpoint(getKey(externalEndpoint));
+        ExternalEndpoint ep = (ExternalEndpoint) 
externalEndpoints.remove(getKey(externalEndpoint));
+        unregisterEndpoint(ep);
         fireEvent(externalEndpoint, 
EndpointEvent.EXTERNAL_ENDPOINT_UNREGISTERED);
     }
 
@@ -498,8 +498,8 @@
      * @param fromEp
      */
     public void unregisterEndpointConnection(QName fromSvc, String fromEp) {
-        unregisterEndpoint(getKey(fromSvc, fromEp));
         LinkedEndpoint ep = (LinkedEndpoint) 
linkedEndpoints.remove(getKey(fromSvc, fromEp));
+        unregisterEndpoint(ep);
         fireEvent(ep, EndpointEvent.LINKED_ENDPOINT_UNREGISTERED);
     }
     
@@ -529,25 +529,22 @@
     }
     
     private void registerEndpoint(AbstractServiceEndpoint serviceEndpoint) {
-        String key = getKey(serviceEndpoint);
         try {
             Endpoint endpoint = new Endpoint(serviceEndpoint, registry);
             ObjectName objectName = 
registry.getContainer().getManagementContext().createObjectName(endpoint);
             
registry.getContainer().getManagementContext().registerMBean(objectName, 
endpoint, EndpointMBean.class);
-            endpointMBeans.put(key, endpoint);
+            endpointMBeans.put(serviceEndpoint, endpoint);
         } catch (JMException e) {
             logger.error("Could not register MBean for endpoint", e);
         }
     }
     
-    private void unregisterEndpoint(String key) {
-        Endpoint ep = (Endpoint) endpointMBeans.remove(key);
-        if (ep != null) {
-            try {
-                
registry.getContainer().getManagementContext().unregisterMBean(ep);
-            } catch (JBIException e) {
-                logger.error("Could not unregister MBean for endpoint", e);
-            }
+    private void unregisterEndpoint(AbstractServiceEndpoint se) {
+        Endpoint ep = (Endpoint) endpointMBeans.remove(se);
+        try {
+            registry.getContainer().getManagementContext().unregisterMBean(ep);
+        } catch (JBIException e) {
+            logger.error("Could not unregister MBean for endpoint", e);
         }
     }
 

Modified: 
incubator/servicemix/branches/servicemix-3.0/servicemix-core/src/main/java/org/apache/servicemix/jbi/framework/ServiceAssemblyRegistry.java
URL: 
http://svn.apache.org/viewvc/incubator/servicemix/branches/servicemix-3.0/servicemix-core/src/main/java/org/apache/servicemix/jbi/framework/ServiceAssemblyRegistry.java?view=diff&rev=466946&r1=466945&r2=466946
==============================================================================
--- 
incubator/servicemix/branches/servicemix-3.0/servicemix-core/src/main/java/org/apache/servicemix/jbi/framework/ServiceAssemblyRegistry.java
 (original)
+++ 
incubator/servicemix/branches/servicemix-3.0/servicemix-core/src/main/java/org/apache/servicemix/jbi/framework/ServiceAssemblyRegistry.java
 Mon Oct 23 01:29:48 2006
@@ -122,6 +122,12 @@
         ServiceAssemblyLifeCycle salc = (ServiceAssemblyLifeCycle) 
serviceAssemblies.remove(name);
         if (salc != null) {
             try {
+                ServiceUnitLifeCycle[] sus = salc.getDeployedSUs();
+                if (sus != null) {
+                    for (int i = 0; i < sus.length; i++) {
+                        registry.unregisterServiceUnit(sus[i].getKey());
+                    }
+                }
                 
registry.getContainer().getManagementContext().unregisterMBean(salc);
             } catch (JBIException e) {
                 log.error("Unable to unregister MBean for service assembly", 
e);

Modified: 
incubator/servicemix/branches/servicemix-3.0/servicemix-core/src/main/java/org/apache/servicemix/jbi/servicedesc/ExternalEndpoint.java
URL: 
http://svn.apache.org/viewvc/incubator/servicemix/branches/servicemix-3.0/servicemix-core/src/main/java/org/apache/servicemix/jbi/servicedesc/ExternalEndpoint.java?view=diff&rev=466946&r1=466945&r2=466946
==============================================================================
--- 
incubator/servicemix/branches/servicemix-3.0/servicemix-core/src/main/java/org/apache/servicemix/jbi/servicedesc/ExternalEndpoint.java
 (original)
+++ 
incubator/servicemix/branches/servicemix-3.0/servicemix-core/src/main/java/org/apache/servicemix/jbi/servicedesc/ExternalEndpoint.java
 Mon Oct 23 01:29:48 2006
@@ -71,18 +71,4 @@
         return se.getServiceName();
     }
 
-    /* (non-Javadoc)
-     * @see java.lang.Object#equals(java.lang.Object)
-     */
-    public boolean equals(Object obj) {
-        return se.equals(obj);
-    }
-
-    /* (non-Javadoc)
-     * @see java.lang.Object#hashCode()
-     */
-    public int hashCode() {
-        return se.hashCode();
-    }
-
 }


Reply via email to