[jboss-cvs] JBoss Messaging SVN: r4803 - in trunk/src: main/org/jboss/messaging/core/management/impl and 1 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Thu Aug 14 09:30:46 EDT 2008


Author: jmesnil
Date: 2008-08-14 09:30:46 -0400 (Thu, 14 Aug 2008)
New Revision: 4803

Modified:
   trunk/src/config/jbm-configuration.xml
   trunk/src/main/org/jboss/messaging/core/management/impl/ManagementServiceImpl.java
   trunk/src/main/org/jboss/messaging/jms/server/management/impl/JMSManagementServiceImpl.java
Log:
JBMESSAGING-1303: Revisit management interfaces

* added a registry to ManagementService to keep track of managed resource even when MBeans are not exposed through JMX

Modified: trunk/src/config/jbm-configuration.xml
===================================================================
--- trunk/src/config/jbm-configuration.xml	2008-08-14 13:04:40 UTC (rev 4802)
+++ trunk/src/config/jbm-configuration.xml	2008-08-14 13:30:46 UTC (rev 4803)
@@ -12,6 +12,7 @@
       
       <security-invalidation-interval>10000</security-invalidation-interval>
       
+      <!-- true to expose JBoss Messaging resources through JMX -->
       <jmx-management-enabled>true</jmx-management-enabled>
 
       <!-- Remoting configuration -->

Modified: trunk/src/main/org/jboss/messaging/core/management/impl/ManagementServiceImpl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/management/impl/ManagementServiceImpl.java	2008-08-14 13:04:40 UTC (rev 4802)
+++ trunk/src/main/org/jboss/messaging/core/management/impl/ManagementServiceImpl.java	2008-08-14 13:30:46 UTC (rev 4803)
@@ -22,6 +22,8 @@
 
 package org.jboss.messaging.core.management.impl;
 
+import java.util.HashMap;
+import java.util.Map;
 import java.util.Set;
 
 import javax.management.MBeanServer;
@@ -60,6 +62,7 @@
 
    private final MBeanServer mbeanServer;
    private final boolean jmxManagementEnabled;
+   private final Map<ObjectName, Object> registry;
 
    private PostOffice postOffice;
    private HierarchicalRepository<Set<Role>> securityRepository;
@@ -94,6 +97,7 @@
    {
       this.mbeanServer = mbeanServer;
       this.jmxManagementEnabled = jmxManagementEnabled;
+      this.registry = new HashMap<ObjectName, Object>();
    }
 
    // Public --------------------------------------------------------
@@ -112,42 +116,27 @@
       MessagingServerControlMBean managedServer = new MessagingServerControl(
             postOffice, storageManager, configuration, securityRepository,
             queueSettingsRepository, messagingServer);
-      if (!jmxManagementEnabled)
-      {
-         return managedServer;
-      }
-      unregisterServer();
       ObjectName objectName = getMessagingServerObjectName();
-      mbeanServer.registerMBean(managedServer, objectName);
+      register(objectName, managedServer);
+      registerInJMX(objectName, managedServer);
       log.info("registered core server under " + objectName);
       return managedServer;
-
    }
 
    public void unregisterServer() throws Exception
    {
-      if (!jmxManagementEnabled)
-      {
-         return;
-      }
       ObjectName objectName = getMessagingServerObjectName();
-      if (mbeanServer.isRegistered(objectName))
-      {
-         mbeanServer.unregisterMBean(getMessagingServerObjectName());
-      }
+      unregister(objectName);
+      unregisterFromJMX(objectName);
    }
 
    public void registerAddress(final SimpleString address) throws Exception
    {
-      if (!jmxManagementEnabled)
-      {
-         return;
-      }
-      unregisterAddress(address);
       ObjectName objectName = getAddressObjectName(address);
       AddressControlMBean addressControl = new AddressControl(address,
             postOffice, securityRepository);
-      mbeanServer.registerMBean(addressControl, objectName);
+      register(objectName, addressControl);
+      registerInJMX(objectName, addressControl);
       if (log.isDebugEnabled())
       {
          log.debug("registered address " + objectName);
@@ -156,29 +145,19 @@
 
    public void unregisterAddress(final SimpleString address) throws Exception
    {
-      if (!jmxManagementEnabled)
-      {
-         return;
-      }
       ObjectName objectName = getAddressObjectName(address);
-      if (mbeanServer.isRegistered(objectName))
-      {
-         mbeanServer.unregisterMBean(objectName);
-      }
+      unregister(objectName);
+      unregisterFromJMX(objectName);
    }
 
    public void registerQueue(final Queue queue, final SimpleString address,
          final StorageManager storageManager) throws Exception
    {
-      if (!jmxManagementEnabled)
-      {
-         return;
-      }
-      unregisterQueue(queue.getName(), address);
       ObjectName objectName = getQueueObjectName(address, queue.getName());
       QueueControlMBean queueControl = new QueueControl(queue, storageManager,
             postOffice, queueSettingsRepository);
-      mbeanServer.registerMBean(queueControl, objectName);
+      register(objectName, queueControl);
+      registerInJMX(objectName, queueControl);
       if (log.isDebugEnabled())
       {
          log.debug("registered queue " + objectName);
@@ -188,22 +167,50 @@
    public void unregisterQueue(final SimpleString name,
          final SimpleString address) throws Exception
    {
+      ObjectName objectName = getQueueObjectName(address, name);
+      unregister(objectName);
+      unregisterFromJMX(objectName);
+   }
+
+   // Package protected ---------------------------------------------
+
+   // Protected -----------------------------------------------------
+
+   // Private -------------------------------------------------------
+
+   private void register(ObjectName objectName, Object managedResource)
+   {
+      unregister(objectName);
+      registry.put(objectName, managedResource);
+   }
+
+   private void unregister(ObjectName objectName)
+   {
+      registry.remove(objectName);
+   }
+
+   private void registerInJMX(ObjectName objectName, Object managedResource)
+         throws Exception
+   {
       if (!jmxManagementEnabled)
       {
          return;
       }
-      ObjectName objectName = getQueueObjectName(address, name);
+      unregisterFromJMX(objectName);
+      mbeanServer.registerMBean(managedResource, objectName);
+   }
+
+   private void unregisterFromJMX(ObjectName objectName) throws Exception
+   {
+      if (!jmxManagementEnabled)
+      {
+         return;
+      }
       if (mbeanServer.isRegistered(objectName))
       {
          mbeanServer.unregisterMBean(objectName);
       }
    }
-
-   // Package protected ---------------------------------------------
-
-   // Protected -----------------------------------------------------
-
-   // Private -------------------------------------------------------
-
+   
    // Inner classes -------------------------------------------------
 }

Modified: trunk/src/main/org/jboss/messaging/jms/server/management/impl/JMSManagementServiceImpl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/jms/server/management/impl/JMSManagementServiceImpl.java	2008-08-14 13:04:40 UTC (rev 4802)
+++ trunk/src/main/org/jboss/messaging/jms/server/management/impl/JMSManagementServiceImpl.java	2008-08-14 13:30:46 UTC (rev 4803)
@@ -22,7 +22,9 @@
 
 package org.jboss.messaging.jms.server.management.impl;
 
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 import javax.management.MBeanServer;
 import javax.management.ObjectName;
@@ -54,6 +56,7 @@
 
    public final MBeanServer mbeanServer;
    private final boolean jmxManagementEnabled;
+   private Map<ObjectName, Object> registry;
 
    // Static --------------------------------------------------------
 
@@ -91,6 +94,7 @@
    {
       this.mbeanServer = mbeanServer;
       this.jmxManagementEnabled = jmxManagementEnabled;
+      this.registry = new HashMap<ObjectName, Object>();
    }
 
    // Public --------------------------------------------------------
@@ -100,22 +104,17 @@
    public void registerJMSServer(final JMSServerManager server)
          throws Exception
    {
-      if (!jmxManagementEnabled)
-      {
-         return;
-      }
       ObjectName objectName = getJMSServerObjectName();
-      unregisterJMSServer();
-      mbeanServer.registerMBean(new JMSServerControl(server), objectName);
+      JMSServerControl control = new JMSServerControl(server);
+      register(objectName, control);
+      registerInJMX(objectName, control);
    }
 
    public void unregisterJMSServer() throws Exception
    {
       ObjectName objectName = getJMSServerObjectName();
-      if (mbeanServer.isRegistered(objectName))
-      {
-         mbeanServer.unregisterMBean(objectName);
-      }
+      unregister(objectName);
+      unregisterFromJMX(objectName);
    }
 
    public void registerQueue(final JBossQueue queue, final Queue coreQueue,
@@ -124,89 +123,96 @@
          HierarchicalRepository<QueueSettings> queueSettingsRepository)
          throws Exception
    {
-      if (!jmxManagementEnabled)
-      {
-         return;
-      }
       ObjectName objectName = getJMSQueueObjectName(queue.getQueueName());
-      unregisterQueue(queue.getQueueName());
-      mbeanServer.registerMBean(new JMSQueueControl(queue, coreQueue,
-            jndiBinding, postOffice, storageManager, queueSettingsRepository),
-            objectName);
+      JMSQueueControl control = new JMSQueueControl(queue, coreQueue,
+            jndiBinding, postOffice, storageManager, queueSettingsRepository);
+      register(objectName, control);
+      registerInJMX(objectName, control);
    }
 
    public void unregisterQueue(final String name) throws Exception
    {
-      if (!jmxManagementEnabled)
-      {
-         return;
-      }
       ObjectName objectName = getJMSQueueObjectName(name);
-      if (mbeanServer.isRegistered(objectName))
-      {
-         mbeanServer.unregisterMBean(objectName);
-      }
+      unregister(objectName);
+      unregisterFromJMX(objectName);
    }
 
    public void registerTopic(final JBossTopic topic, final String jndiBinding,
          final PostOffice postOffice, final StorageManager storageManager)
          throws Exception
    {
-      if (!jmxManagementEnabled)
-      {
-         return;
-      }
       ObjectName objectName = getJMSTopicObjectName(topic.getTopicName());
-      unregisterTopic(topic.getTopicName());
-      mbeanServer.registerMBean(new TopicControl(topic, jndiBinding,
-            postOffice, storageManager), objectName);
+      TopicControl control = new TopicControl(topic, jndiBinding, postOffice,
+            storageManager);
+      register(objectName, control);
+      registerInJMX(objectName, control);
    }
 
    public void unregisterTopic(final String name) throws Exception
    {
-      if (!jmxManagementEnabled)
-      {
-         return;
-      }
       ObjectName objectName = getJMSTopicObjectName(name);
-      if (mbeanServer.isRegistered(objectName))
-      {
-         mbeanServer.unregisterMBean(getJMSTopicObjectName(name));
-      }
+      unregister(objectName);
+      unregisterFromJMX(objectName);
    }
 
    public void registerConnectionFactory(final String name,
          final JBossConnectionFactory connectionFactory,
          final List<String> bindings) throws Exception
    {
+      ObjectName objectName = getConnectionFactoryObjectName(name);
+      ConnectionFactoryControl control = new ConnectionFactoryControl(
+            connectionFactory, connectionFactory.getCoreConnection(), name,
+            bindings);
+      register(objectName, control);
+      registerInJMX(objectName, control);
+   }
+
+   public void unregisterConnectionFactory(final String name) throws Exception
+   {
+      ObjectName objectName = getConnectionFactoryObjectName(name);
+      unregister(objectName);
+      unregisterFromJMX(objectName);
+   }
+
+   // Package protected ---------------------------------------------
+
+   // Protected -----------------------------------------------------
+
+   // Private -------------------------------------------------------
+
+   private void register(ObjectName objectName, Object managedResource)
+   {
+      unregister(objectName);
+      registry.put(objectName, managedResource);
+   }
+
+   private void unregister(ObjectName objectName)
+   {
+      registry.remove(objectName);
+   }
+
+   private void registerInJMX(ObjectName objectName, Object managedResource)
+         throws Exception
+   {
       if (!jmxManagementEnabled)
       {
          return;
       }
-      ObjectName objectName = getConnectionFactoryObjectName(name);
-      unregisterConnectionFactory(name);
-      mbeanServer.registerMBean(new ConnectionFactoryControl(connectionFactory,
-            connectionFactory.getCoreConnection(), name, bindings), objectName);
+      unregisterFromJMX(objectName);
+      mbeanServer.registerMBean(managedResource, objectName);
    }
 
-   public void unregisterConnectionFactory(final String name) throws Exception
+   private void unregisterFromJMX(ObjectName objectName) throws Exception
    {
       if (!jmxManagementEnabled)
       {
          return;
       }
-      ObjectName objectName = getConnectionFactoryObjectName(name);
       if (mbeanServer.isRegistered(objectName))
       {
          mbeanServer.unregisterMBean(objectName);
       }
    }
 
-   // Package protected ---------------------------------------------
-
-   // Protected -----------------------------------------------------
-
-   // Private -------------------------------------------------------
-
    // Inner classes -------------------------------------------------
 }




More information about the jboss-cvs-commits mailing list