Author: jstrachan
Date: Tue Apr 25 07:06:52 2006
New Revision: 396892

URL: http://svn.apache.org/viewcvs?rev=396892&view=rev
Log:
added a helper method to make it easier to work with the admin view together 
with fixed some NPEs I was getting when redeploying ActiveMQ when using mvn 
jetty6:run

Modified:
    
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/BrokerService.java

Modified: 
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/BrokerService.java
URL: 
http://svn.apache.org/viewcvs/incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/BrokerService.java?rev=396892&r1=396891&r2=396892&view=diff
==============================================================================
--- 
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/BrokerService.java
 (original)
+++ 
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/BrokerService.java
 Tue Apr 25 07:06:52 2006
@@ -35,7 +35,6 @@
 import org.apache.activemq.advisory.AdvisoryBroker;
 import org.apache.activemq.broker.ft.MasterConnector;
 import org.apache.activemq.broker.jmx.BrokerView;
-import org.apache.activemq.broker.jmx.BrokerViewMBean;
 import org.apache.activemq.broker.jmx.ConnectorView;
 import org.apache.activemq.broker.jmx.ConnectorViewMBean;
 import org.apache.activemq.broker.jmx.FTConnectorView;
@@ -96,6 +95,7 @@
     private String brokerName = "localhost";
     private File dataDirectory;
     private Broker broker;
+    private BrokerView adminView;
     private ManagementContext managementContext;
     private ObjectName brokerObjectName;
     private TaskRunnerFactory taskRunnerFactory;
@@ -121,7 +121,6 @@
     private AtomicBoolean started = new AtomicBoolean(false);
     private BrokerPlugin[] plugins;
     private boolean keepDurableSubsActive=true;
-
     private BrokerId brokerId;
 
     /**
@@ -426,13 +425,15 @@
 
         if (isUseJmx()) {
             MBeanServer mbeanServer = getManagementContext().getMBeanServer();
-            for (Iterator iter = registeredMBeanNames.iterator(); 
iter.hasNext();) {
-                ObjectName name = (ObjectName) iter.next();
-                try {
-                    mbeanServer.unregisterMBean(name);
-                }
-                catch (Exception e) {
-                    stopper.onException(mbeanServer, e);
+            if (mbeanServer != null) {
+                for (Iterator iter = registeredMBeanNames.iterator(); 
iter.hasNext();) {
+                    ObjectName name = (ObjectName) iter.next();
+                    try {
+                        mbeanServer.unregisterMBean(name);
+                    }
+                    catch (Exception e) {
+                        stopper.onException(mbeanServer, e);
+                    }
                 }
             }
             stopper.stop(getManagementContext());
@@ -445,6 +446,10 @@
 
     // Properties
     // 
-------------------------------------------------------------------------
+    
+    /**
+     * Returns the message broker
+     */
     public Broker getBroker() throws Exception {
         if (broker == null) {
             log.info("ActiveMQ " + ActiveMQConnectionMetaData.PROVIDER_VERSION 
+ " JMS Message Broker ("
@@ -455,6 +460,24 @@
         return broker;
     }
 
+    
+    /**
+     * Returns the administration view of the broker; used to create and 
destroy resources such as queues and topics.
+     * 
+     * Note this method returns null if JMX is disabled.
+     */
+    public BrokerView getAdminView() throws Exception {
+        if (adminView == null) {
+            // force lazy creation
+            getBroker();
+        }
+        return adminView;
+    }
+
+    public void setAdminView(BrokerView adminView) {
+        this.adminView = adminView;
+    }
+
     public String getBrokerName() {
         return brokerName;
     }
@@ -774,84 +797,82 @@
 
     protected void registerConnectorMBean(TransportConnector connector, 
ObjectName objectName) throws IOException, URISyntaxException {
         MBeanServer mbeanServer = getManagementContext().getMBeanServer();
-        ConnectorViewMBean view = new ConnectorView(connector);
-        try {
-            mbeanServer.registerMBean(view, objectName);
-            registeredMBeanNames.add(objectName);
-        }
-        catch (Throwable e) {
-            throw IOExceptionSupport.create("Broker could not be registered in 
JMX: " + e.getMessage(), e);
+        if (mbeanServer != null) {
+            ConnectorViewMBean view = new ConnectorView(connector);
+            try {
+                mbeanServer.registerMBean(view, objectName);
+                registeredMBeanNames.add(objectName);
+            }
+            catch (Throwable e) {
+                throw IOExceptionSupport.create("Broker could not be 
registered in JMX: " + e.getMessage(), e);
+            }
         }
     }
 
     protected void registerNetworkConnectorMBean(NetworkConnector connector) 
throws IOException {
         MBeanServer mbeanServer = getManagementContext().getMBeanServer();
-        NetworkConnectorViewMBean view = new NetworkConnectorView(connector);
-        try {
-               ObjectName objectName = new ObjectName(
-                       managementContext.getJmxDomainName()+":"+
-                       
"BrokerName="+JMXSupport.encodeObjectNamePart(getBrokerName())+","+
-                       "Type=NetworkConnector,"+
-                    
"NetworkConnectorName="+JMXSupport.encodeObjectNamePart(connector.getName())
-                       );
-            mbeanServer.registerMBean(view, objectName);
-            registeredMBeanNames.add(objectName);
-        }
-        catch (Throwable e) {
-            throw IOExceptionSupport.create("Broker could not be registered in 
JMX: " + e.getMessage(), e);
+        if (mbeanServer != null) {
+            NetworkConnectorViewMBean view = new 
NetworkConnectorView(connector);
+            try {
+                ObjectName objectName = new 
ObjectName(managementContext.getJmxDomainName() + ":" + "BrokerName="
+                        + JMXSupport.encodeObjectNamePart(getBrokerName()) + 
"," + "Type=NetworkConnector," + "NetworkConnectorName="
+                        + 
JMXSupport.encodeObjectNamePart(connector.getName()));
+                mbeanServer.registerMBean(view, objectName);
+                registeredMBeanNames.add(objectName);
+            }
+            catch (Throwable e) {
+                throw IOExceptionSupport.create("Broker could not be 
registered in JMX: " + e.getMessage(), e);
+            }
         }
     }
 
     protected void registerProxyConnectorMBean(ProxyConnector connector) 
throws IOException {
         MBeanServer mbeanServer = getManagementContext().getMBeanServer();
-        ProxyConnectorView view = new ProxyConnectorView(connector);
-        try {
-               ObjectName objectName = new ObjectName(
-                       managementContext.getJmxDomainName()+":"+
-                       
"BrokerName="+JMXSupport.encodeObjectNamePart(getBrokerName())+","+
-                       "Type=ProxyConnector,"+
-                    
"ProxyConnectorName="+JMXSupport.encodeObjectNamePart(connector.getName())
-                       );
-            mbeanServer.registerMBean(view, objectName);
-            registeredMBeanNames.add(objectName);
-        }
-        catch (Throwable e) {
-            throw IOExceptionSupport.create("Broker could not be registered in 
JMX: " + e.getMessage(), e);
+        if (mbeanServer != null) {
+            ProxyConnectorView view = new ProxyConnectorView(connector);
+            try {
+                ObjectName objectName = new 
ObjectName(managementContext.getJmxDomainName() + ":" + "BrokerName="
+                        + JMXSupport.encodeObjectNamePart(getBrokerName()) + 
"," + "Type=ProxyConnector," + "ProxyConnectorName="
+                        + 
JMXSupport.encodeObjectNamePart(connector.getName()));
+                mbeanServer.registerMBean(view, objectName);
+                registeredMBeanNames.add(objectName);
+            }
+            catch (Throwable e) {
+                throw IOExceptionSupport.create("Broker could not be 
registered in JMX: " + e.getMessage(), e);
+            }
         }
     }
-    
+
     protected void registerFTConnectorMBean(MasterConnector connector) throws 
IOException {
         MBeanServer mbeanServer = getManagementContext().getMBeanServer();
-        FTConnectorView view = new FTConnectorView(connector);
-        try {
-               ObjectName objectName = new ObjectName(
-                       managementContext.getJmxDomainName()+":"+
-                       
"BrokerName="+JMXSupport.encodeObjectNamePart(getBrokerName())+","+
-                       "Type=MasterConnector"
-                       );
-            mbeanServer.registerMBean(view, objectName);
-            registeredMBeanNames.add(objectName);
-        }
-        catch (Throwable e) {
-            throw IOExceptionSupport.create("Broker could not be registered in 
JMX: " + e.getMessage(), e);
+        if (mbeanServer != null) {
+            FTConnectorView view = new FTConnectorView(connector);
+            try {
+                ObjectName objectName = new 
ObjectName(managementContext.getJmxDomainName() + ":" + "BrokerName="
+                        + JMXSupport.encodeObjectNamePart(getBrokerName()) + 
"," + "Type=MasterConnector");
+                mbeanServer.registerMBean(view, objectName);
+                registeredMBeanNames.add(objectName);
+            }
+            catch (Throwable e) {
+                throw IOExceptionSupport.create("Broker could not be 
registered in JMX: " + e.getMessage(), e);
+            }
         }
     }
-    
+
     protected void registerJmsConnectorMBean(JmsConnector connector) throws 
IOException {
         MBeanServer mbeanServer = getManagementContext().getMBeanServer();
-        JmsConnectorView view = new JmsConnectorView(connector);
-        try {
-               ObjectName objectName = new ObjectName(
-                       managementContext.getJmxDomainName()+":"+
-                       
"BrokerName="+JMXSupport.encodeObjectNamePart(getBrokerName())+","+
-                       "Type=JmsConnector,"+
-                    
"JmsConnectorName="+JMXSupport.encodeObjectNamePart(connector.getName())
-                       );
-            mbeanServer.registerMBean(view, objectName);
-            registeredMBeanNames.add(objectName);
-        }
-        catch (Throwable e) {
-            throw IOExceptionSupport.create("Broker could not be registered in 
JMX: " + e.getMessage(), e);
+        if (mbeanServer != null) {
+            JmsConnectorView view = new JmsConnectorView(connector);
+            try {
+                ObjectName objectName = new 
ObjectName(managementContext.getJmxDomainName() + ":" + "BrokerName="
+                        + JMXSupport.encodeObjectNamePart(getBrokerName()) + 
"," + "Type=JmsConnector," + "JmsConnectorName="
+                        + 
JMXSupport.encodeObjectNamePart(connector.getName()));
+                mbeanServer.registerMBean(view, objectName);
+                registeredMBeanNames.add(objectName);
+            }
+            catch (Throwable e) {
+                throw IOExceptionSupport.create("Broker could not be 
registered in JMX: " + e.getMessage(), e);
+            }
         }
     }
     
@@ -882,11 +903,13 @@
         if (isUseJmx()) {
             ManagedRegionBroker managedBroker = (ManagedRegionBroker) 
regionBroker;
             managedBroker.setContextBroker(broker);
-            BrokerViewMBean view = new BrokerView(this, managedBroker);
+            adminView = new BrokerView(this, managedBroker);
             MBeanServer mbeanServer = getManagementContext().getMBeanServer();
-            ObjectName objectName = getBrokerObjectName();
-            mbeanServer.registerMBean(view, objectName);
-            registeredMBeanNames.add(objectName);
+            if (mbeanServer != null) {
+                ObjectName objectName = getBrokerObjectName();
+                mbeanServer.registerMBean(adminView, objectName);
+                registeredMBeanNames.add(objectName);
+            }
         }
         
 
@@ -908,8 +931,8 @@
                RegionBroker regionBroker = null;
         if (isUseJmx()) {
             MBeanServer mbeanServer = getManagementContext().getMBeanServer();
-            regionBroker = new ManagedRegionBroker(this,mbeanServer, 
getBrokerObjectName(),
-                    getTaskRunnerFactory(), getMemoryManager(), 
getPersistenceAdapter());
+            regionBroker = new ManagedRegionBroker(this, mbeanServer, 
getBrokerObjectName(), getTaskRunnerFactory(), getMemoryManager(),
+                    getPersistenceAdapter());
         }
         else {
                        regionBroker = new 
RegionBroker(this,getTaskRunnerFactory(), getMemoryManager(), 
getPersistenceAdapter());
@@ -1068,7 +1091,7 @@
                 JmsConnector connector = (JmsConnector) iter.next();
                 connector.start();
             }
-            }
+        }
     }
 
     protected void startTransportConnector(TransportConnector connector) 
throws Exception {


Reply via email to