summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Gemmell <robbie@apache.org>2013-05-20 11:16:24 +0000
committerRobert Gemmell <robbie@apache.org>2013-05-20 11:16:24 +0000
commit6dd36819dc2e1745dc733d7204b05574ddffd0cf (patch)
tree9f2d251f439ffb39910836a23ed3207dbdf0b0a1
parent65ff0be15a15ee3c65757d3a8f8bef0a29a9a8dd (diff)
downloadqpid-python-6dd36819dc2e1745dc733d7204b05574ddffd0cf.tar.gz
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
-rw-r--r--qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/JMXManagement.java49
-rw-r--r--qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/VirtualHostMBean.java14
-rw-r--r--qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostImpl.java3
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());