Author: robbie
Date: Sun Aug 16 21:18:14 2009
New Revision: 804781

URL: http://svn.apache.org/viewvc?rev=804781&view=rev
Log:
QPID-2039: close the JMXConnectorServer down during shutdown of the 
JMXManagedObjectRegistry

Modified:
    
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/management/JMXManagedObjectRegistry.java

Modified: 
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/management/JMXManagedObjectRegistry.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/management/JMXManagedObjectRegistry.java?rev=804781&r1=804780&r2=804781&view=diff
==============================================================================
--- 
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/management/JMXManagedObjectRegistry.java
 (original)
+++ 
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/management/JMXManagedObjectRegistry.java
 Sun Aug 16 21:18:14 2009
@@ -35,11 +35,7 @@
 import javax.management.MBeanServerFactory;
 import javax.management.ObjectName;
 import javax.management.NotificationListener;
-import javax.management.MalformedObjectNameException;
-import javax.management.NotificationFilter;
 import javax.management.NotificationFilterSupport;
-import javax.management.InstanceNotFoundException;
-import javax.management.relation.MBeanServerNotificationFilter;
 import javax.management.remote.JMXConnectorServer;
 import javax.management.remote.JMXServiceURL;
 import javax.management.remote.MBeanServerForwarder;
@@ -82,6 +78,7 @@
     public static final int PORT_EXPORT_OFFSET = 100;
 
     private final MBeanServer _mbeanServer;
+    private JMXConnectorServer _cs;
     private Registry _rmiRegistry;
     
 
@@ -120,7 +117,6 @@
         Map<String, PrincipalDatabase> map = 
appRegistry.getDatabaseManager().getDatabases();        
         PrincipalDatabase db = map.get(jmxDatabaseName);
 
-        final JMXConnectorServer cs;
         HashMap<String,Object> env = new HashMap<String,Object>();
 
         //Socket factories for the RMIConnectorServer, either default or SLL 
depending on configuration
@@ -246,7 +242,7 @@
                 
"service:jmx:rmi://"+hostname+":"+(port+PORT_EXPORT_OFFSET)+"/jndi/rmi://"+hostname+":"+port+"/jmxrmi");
 
         final JMXServiceURL internalUrl = new JMXServiceURL("rmi", hostname, 
port+PORT_EXPORT_OFFSET);
-        cs = new RMIConnectorServer(internalUrl, env, rmiConnectorServerStub, 
_mbeanServer)
+        _cs = new RMIConnectorServer(internalUrl, env, rmiConnectorServerStub, 
_mbeanServer)
         {   
             @Override  
             public synchronized void start() throws IOException
@@ -282,7 +278,7 @@
 
         //Add the custom invoker as an MBeanServerForwarder, and start the 
RMIConnectorServer.
         MBeanServerForwarder mbsf = 
MBeanInvocationHandlerImpl.newProxyInstance();
-        cs.setMBeanServerForwarder(mbsf);
+        _cs.setMBeanServerForwarder(mbsf);
 
         NotificationFilterSupport filter = new NotificationFilterSupport();
         filter.enableType(JMXConnectionNotification.OPENED);
@@ -290,9 +286,9 @@
         filter.enableType(JMXConnectionNotification.FAILED);
         // Get the handler that is used by the above MBInvocationHandler Proxy.
         // which is the MBeanInvocationHandlerImpl and so also a 
NotificationListener
-        cs.addNotificationListener((NotificationListener) 
Proxy.getInvocationHandler(mbsf), filter, null);
+        _cs.addNotificationListener((NotificationListener) 
Proxy.getInvocationHandler(mbsf), filter, null);
 
-        cs.start();
+        _cs.start();
 
 
         CurrentActor.get().message(ManagementConsoleMessages.MNG_1004());
@@ -377,6 +373,19 @@
             UnicastRemoteObject.unexportObject(_rmiRegistry, true);
         }
         
+        if (_cs != null)
+        {
+            // Stopping the JMX ConnectorServer
+            try
+            {
+                _cs.stop();
+            }
+            catch (IOException e)
+            {
+                _log.warn("Error while closing the JMX ConnectorServer: " + 
e.getMessage());
+            }
+        }
+        
         //ObjectName query to gather all Qpid related MBeans
         ObjectName mbeanNameQuery = null;
         try



---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:commits-subscr...@qpid.apache.org

Reply via email to