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 | da454430e2b811bbfc409dedc07d1063baee0286 (patch) | |
| tree | 2bc6770f9c0cd6775374927bcd761ea5367dc6ee /java | |
| parent | 12e731d81c02a750a8e98b9e9dad5750fe754590 (diff) | |
| download | qpid-python-da454430e2b811bbfc409dedc07d1063baee0286.tar.gz | |
QPID-2039: close the JMXConnectorServer down during shutdown of the JMXManagedObjectRegistry
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@804781 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'java')
| -rw-r--r-- | java/broker/src/main/java/org/apache/qpid/server/management/JMXManagedObjectRegistry.java | 27 |
1 files changed, 18 insertions, 9 deletions
diff --git a/java/broker/src/main/java/org/apache/qpid/server/management/JMXManagedObjectRegistry.java b/java/broker/src/main/java/org/apache/qpid/server/management/JMXManagedObjectRegistry.java index 5ffcee77f2..42b3b05ac5 100644 --- a/java/broker/src/main/java/org/apache/qpid/server/management/JMXManagedObjectRegistry.java +++ b/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 |
