diff options
author | Robert Gemmell <robbie@apache.org> | 2009-08-16 21:18:14 +0000 |
---|---|---|
committer | Robert Gemmell <robbie@apache.org> | 2009-08-16 21:18:14 +0000 |
commit | 8d243720ce877ef59db7572194b80a2c5d0737e8 (patch) | |
tree | b804c354600bea9c688766f52e9dff1652dd7a94 | |
parent | 8a11b9f6df8882fb704955afcdfec3c1e14fd9bd (diff) | |
download | qpid-python-8d243720ce877ef59db7572194b80a2c5d0737e8.tar.gz |
QPID-2039: close the JMXConnectorServer down during shutdown of the JMXManagedObjectRegistry
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@804781 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r-- | qpid/java/broker/src/main/java/org/apache/qpid/server/management/JMXManagedObjectRegistry.java | 27 |
1 files changed, 18 insertions, 9 deletions
diff --git a/qpid/java/broker/src/main/java/org/apache/qpid/server/management/JMXManagedObjectRegistry.java b/qpid/java/broker/src/main/java/org/apache/qpid/server/management/JMXManagedObjectRegistry.java index 5ffcee77f2..42b3b05ac5 100644 --- a/qpid/java/broker/src/main/java/org/apache/qpid/server/management/JMXManagedObjectRegistry.java +++ b/qpid/java/broker/src/main/java/org/apache/qpid/server/management/JMXManagedObjectRegistry.java @@ -35,11 +35,7 @@ import javax.management.MBeanServer; 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 class JMXManagedObjectRegistry implements ManagedObjectRegistry public static final int PORT_EXPORT_OFFSET = 100; private final MBeanServer _mbeanServer; + private JMXConnectorServer _cs; private Registry _rmiRegistry; @@ -120,7 +117,6 @@ public class JMXManagedObjectRegistry implements ManagedObjectRegistry 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 @@ public class JMXManagedObjectRegistry implements ManagedObjectRegistry "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 @@ public class JMXManagedObjectRegistry implements ManagedObjectRegistry //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 @@ public class JMXManagedObjectRegistry implements ManagedObjectRegistry 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 @@ public class JMXManagedObjectRegistry implements ManagedObjectRegistry 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 |