From 6dd36819dc2e1745dc733d7204b05574ddffd0cf Mon Sep 17 00:00:00 2001 From: Robert Gemmell Date: Mon, 20 May 2013 11:16:24 +0000 Subject: QPID-4862: Improve registration/unregistration for JMX MBean objects merged from trunk r1483863 git-svn-id: https://svn.apache.org/repos/asf/qpid/branches/0.22@1484429 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/qpid/server/jmx/JMXManagement.java | 49 ++++++---------------- .../qpid/server/jmx/mbeans/VirtualHostMBean.java | 14 ++++--- .../qpid/server/virtualhost/VirtualHostImpl.java | 3 ++ 3 files changed, 23 insertions(+), 43 deletions(-) diff --git a/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/JMXManagement.java b/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/JMXManagement.java index f58ec2bfbd..c8f47c918e 100644 --- a/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/JMXManagement.java +++ b/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/JMXManagement.java @@ -108,11 +108,7 @@ public class JMXManagement extends AbstractPluginAdapter implements Configuratio { start(); } - catch (JMException e) - { - throw new RuntimeException("Couldn't start JMX management", e); - } - catch (IOException e) + catch (Exception e) { throw new RuntimeException("Couldn't start JMX management", e); } @@ -226,9 +222,9 @@ public class JMXManagement extends AbstractPluginAdapter implements Configuratio { mbean.unregister(); } - catch (JMException e) + catch (Exception e) { - LOGGER.error("Error unregistering mbean", e); + LOGGER.error("Exception while unregistering mbean for " + object.getClass().getSimpleName() + " " + object.getName(), e); } } _children.clear(); @@ -270,9 +266,9 @@ public class JMXManagement extends AbstractPluginAdapter implements Configuratio createAdditionalMBeansFromProviders(child, mbean); } } - catch(JMException e) + catch(Exception e) { - LOGGER.error("Error creating mbean", e); + LOGGER.error("Exception while creating mbean for " + child.getClass().getSimpleName() + " " + child.getName(), e); // TODO - Implement error reporting on mbean creation } } @@ -281,40 +277,19 @@ public class JMXManagement extends AbstractPluginAdapter implements Configuratio @Override public void childRemoved(ConfiguredObject object, ConfiguredObject child) { - // TODO - implement vhost removal (possibly just removing the instanceof check below) - synchronized (_children) { - if(child instanceof PasswordCredentialManagingAuthenticationProvider) + AMQManagedObject mbean = _children.remove(child); + if(mbean != null) { - AMQManagedObject mbean = _children.remove(child); - if(mbean != null) + try { - try - { - mbean.unregister(); - } - catch(JMException e) - { - LOGGER.error("Error unregistering user management mbean: " + child.getName(), e); - //TODO - report error on removing child MBean - } + mbean.unregister(); } - } - else if (child instanceof VirtualHost) - { - AMQManagedObject mbean = _children.remove(child); - if(mbean != null) + catch(Exception e) { - try - { - mbean.unregister(); - } - catch(JMException e) - { - LOGGER.error("Error unregistering virtual host mbean :" + child.getName(), e); - //TODO - report error on removing child MBean - } + LOGGER.error("Exception while unregistering mbean for " + child.getClass().getSimpleName() + " " + child.getName(), e); + //TODO - report error on removing child MBean } } } diff --git a/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/VirtualHostMBean.java b/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/VirtualHostMBean.java index 51dea92775..e9e3e1df49 100644 --- a/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/VirtualHostMBean.java +++ b/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/VirtualHostMBean.java @@ -173,9 +173,9 @@ public class VirtualHostMBean extends AMQManagedObject implements ManagedVirtual } } - catch(JMException e) + catch(Exception e) { - LOGGER.error("Failed to add mbean for child : " + child.getName(), e); + LOGGER.error("Exception while creating mbean for " + child.getClass().getSimpleName() + " " + child.getName(), e); } } } @@ -191,9 +191,9 @@ public class VirtualHostMBean extends AMQManagedObject implements ManagedVirtual { mbean.unregister(); } - catch(JMException e) + catch(Exception e) { - LOGGER.error("Failed to remove mbean for child : " + child.getName(), e); + LOGGER.error("Exception while unregistering mbean for " + child.getClass().getSimpleName() + " " + child.getName(), e); } } } @@ -233,6 +233,8 @@ public class VirtualHostMBean extends AMQManagedObject implements ManagedVirtual @Override public void unregister() throws JMException { + _virtualHost.removeChangeListener(this); + synchronized (_children) { for (AMQManagedObject mbean : _children.values()) @@ -243,9 +245,9 @@ public class VirtualHostMBean extends AMQManagedObject implements ManagedVirtual { mbean.unregister(); } - catch(JMException e) + catch(Exception e) { - LOGGER.error("Failed to remove mbean for child : " + mbean, e); + LOGGER.error("Exception while unregistering mbean : " + mbean, e); } } } diff --git a/qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostImpl.java b/qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostImpl.java index b39f975c28..cbb7cb8224 100644 --- a/qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostImpl.java +++ b/qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostImpl.java @@ -469,6 +469,9 @@ public class VirtualHostImpl implements VirtualHost, IConnectionRegistry.Registr } } + // clear exchange objects + _exchangeRegistry.clearAndUnregisterMbeans(); + _state = State.STOPPED; CurrentActor.get().message(VirtualHostMessages.CLOSED()); -- cgit v1.2.1