You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by de...@apache.org on 2010/07/14 10:21:54 UTC

svn commit: r963970 - in /activemq/trunk/activemq-web/src/main/java/org/apache/activemq/web: BrokerFacadeSupport.java LocalBrokerFacade.java RemoteJMXBrokerFacade.java

Author: dejanb
Date: Wed Jul 14 08:21:53 2010
New Revision: 963970

URL: http://svn.apache.org/viewvc?rev=963970&view=rev
Log:
https://issues.apache.org/activemq/browse/AMQ-2570 - allow monitoring connections, scheduled messages, etc. for remote brokers

Modified:
    activemq/trunk/activemq-web/src/main/java/org/apache/activemq/web/BrokerFacadeSupport.java
    activemq/trunk/activemq-web/src/main/java/org/apache/activemq/web/LocalBrokerFacade.java
    activemq/trunk/activemq-web/src/main/java/org/apache/activemq/web/RemoteJMXBrokerFacade.java

Modified: activemq/trunk/activemq-web/src/main/java/org/apache/activemq/web/BrokerFacadeSupport.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-web/src/main/java/org/apache/activemq/web/BrokerFacadeSupport.java?rev=963970&r1=963969&r2=963970&view=diff
==============================================================================
--- activemq/trunk/activemq-web/src/main/java/org/apache/activemq/web/BrokerFacadeSupport.java (original)
+++ activemq/trunk/activemq-web/src/main/java/org/apache/activemq/web/BrokerFacadeSupport.java Wed Jul 14 08:21:53 2010
@@ -23,6 +23,7 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.Set;
 import javax.management.ObjectName;
+import javax.management.QueryExp;
 import javax.management.openmbean.CompositeData;
 import javax.management.openmbean.TabularData;
 import org.apache.activemq.broker.jmx.BrokerViewMBean;
@@ -45,6 +46,8 @@ import org.springframework.util.StringUt
  */
 public abstract class BrokerFacadeSupport implements BrokerFacade {
     public abstract ManagementContext getManagementContext();
+    public abstract Set queryNames(ObjectName name, QueryExp query) throws Exception;
+    public abstract Object newProxyInstance( ObjectName objectName, Class interfaceClass, boolean notificationBroadcaster) throws Exception;
 
     public Collection<QueueViewMBean> getQueues() throws Exception {
         BrokerViewMBean broker = getBrokerAdmin();
@@ -94,11 +97,11 @@ public abstract class BrokerFacadeSuppor
     }
 
     @SuppressWarnings("unchecked")
-    protected <T> Collection<T> getManagedObjects(ObjectName[] names, Class<T> type) {
+    protected <T> Collection<T> getManagedObjects(ObjectName[] names, Class<T> type) throws Exception {
         List<T> answer = new ArrayList<T>();
         for (int i = 0; i < names.length; i++) {
             ObjectName name = names[i];
-            T value = (T) getManagementContext().newProxyInstance(name, type, true);
+            T value = (T) newProxyInstance(name, type, true);
             if (value != null) {
                 answer.add(value);
             }
@@ -110,7 +113,7 @@ public abstract class BrokerFacadeSuppor
     public Collection<ConnectionViewMBean> getConnections() throws Exception {
         String brokerName = getBrokerName();
         ObjectName query = new ObjectName("org.apache.activemq:BrokerName=" + brokerName + ",Type=Connection,*");
-        Set<ObjectName> queryResult = getManagementContext().queryNames(query, null);
+        Set<ObjectName> queryResult = queryNames(query, null);
         return getManagedObjects(queryResult.toArray(new ObjectName[queryResult.size()]), ConnectionViewMBean.class);
     }
 
@@ -119,7 +122,7 @@ public abstract class BrokerFacadeSuppor
         String brokerName = getBrokerName();
         ObjectName query = new ObjectName("org.apache.activemq:BrokerName=" + brokerName
                 + ",Type=Connection,ConnectorName=" + connectorName + ",*");
-        Set<ObjectName> queryResult = getManagementContext().queryNames(query, null);
+        Set<ObjectName> queryResult = queryNames(query, null);
         Collection<String> result = new ArrayList<String>(queryResult.size());
         for (ObjectName on : queryResult) {
             String name = StringUtils.replace(on.getKeyProperty("Connection"), "_", ":");
@@ -134,11 +137,11 @@ public abstract class BrokerFacadeSuppor
         String brokerName = getBrokerName();
         ObjectName query = new ObjectName("org.apache.activemq:BrokerName=" + brokerName
                 + ",Type=Connection,*,Connection=" + connectionName);
-        Set<ObjectName> queryResult = getManagementContext().queryNames(query, null);
+        Set<ObjectName> queryResult = queryNames(query, null);
         if (queryResult.size() == 0)
             return null;
         ObjectName objectName = queryResult.iterator().next();
-        return (ConnectionViewMBean) getManagementContext().newProxyInstance(objectName, ConnectionViewMBean.class,
+        return (ConnectionViewMBean) newProxyInstance(objectName, ConnectionViewMBean.class,
                 true);
     }
 
@@ -146,7 +149,7 @@ public abstract class BrokerFacadeSuppor
     public Collection<String> getConnectors() throws Exception {
         String brokerName = getBrokerName();
         ObjectName query = new ObjectName("org.apache.activemq:BrokerName=" + brokerName + ",Type=Connector,*");
-        Set<ObjectName> queryResult = getManagementContext().queryNames(query, null);
+        Set<ObjectName> queryResult = queryNames(query, null);
         Collection<String> result = new ArrayList<String>(queryResult.size());
         for (ObjectName on : queryResult)
             result.add(on.getKeyProperty("ConnectorName"));
@@ -157,14 +160,14 @@ public abstract class BrokerFacadeSuppor
         String brokerName = getBrokerName();
         ObjectName objectName = new ObjectName("org.apache.activemq:BrokerName=" + brokerName
                 + ",Type=Connector,ConnectorName=" + name);
-        return (ConnectorViewMBean) getManagementContext().newProxyInstance(objectName, ConnectorViewMBean.class, true);
+        return (ConnectorViewMBean) newProxyInstance(objectName, ConnectorViewMBean.class, true);
     }
 
     @SuppressWarnings("unchecked")
     public Collection<NetworkConnectorViewMBean> getNetworkConnectors() throws Exception {
         String brokerName = getBrokerName();
         ObjectName query = new ObjectName("org.apache.activemq:BrokerName=" + brokerName + ",Type=NetworkConnector,*");
-        Set<ObjectName> queryResult = getManagementContext().queryNames(query, null);
+        Set<ObjectName> queryResult = queryNames(query, null);
         return getManagedObjects(queryResult.toArray(new ObjectName[queryResult.size()]),
                 NetworkConnectorViewMBean.class);
     }
@@ -175,7 +178,7 @@ public abstract class BrokerFacadeSuppor
         queueName = StringUtils.replace(queueName, "\"", "_");
         ObjectName query = new ObjectName("org.apache.activemq:BrokerName=" + brokerName
                 + ",Type=Subscription,destinationType=Queue,destinationName=" + queueName + ",*");
-        Set<ObjectName> queryResult = getManagementContext().queryNames(query, null);
+        Set<ObjectName> queryResult = queryNames(query, null);
         return getManagedObjects(queryResult.toArray(new ObjectName[queryResult.size()]), SubscriptionViewMBean.class);
     }
 
@@ -185,13 +188,13 @@ public abstract class BrokerFacadeSuppor
         String brokerName = getBrokerName();
         ObjectName query = new ObjectName("org.apache.activemq:BrokerName=" + brokerName
                 + ",Type=Subscription,clientId=" + connectionName + ",*");
-        Set<ObjectName> queryResult = getManagementContext().queryNames(query, null);
+        Set<ObjectName> queryResult = queryNames(query, null);
         return getManagedObjects(queryResult.toArray(new ObjectName[queryResult.size()]), SubscriptionViewMBean.class);
     }
 
     public JobSchedulerViewMBean getJobScheduler() throws Exception {
         ObjectName name = getBrokerAdmin().getJMSJobScheduler();
-        return (JobSchedulerViewMBean) getManagementContext().newProxyInstance(name, JobSchedulerViewMBean.class, true);
+        return (JobSchedulerViewMBean) newProxyInstance(name, JobSchedulerViewMBean.class, true);
     }
 
     public Collection<JobFacade> getScheduledJobs() throws Exception {

Modified: activemq/trunk/activemq-web/src/main/java/org/apache/activemq/web/LocalBrokerFacade.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-web/src/main/java/org/apache/activemq/web/LocalBrokerFacade.java?rev=963970&r1=963969&r2=963970&view=diff
==============================================================================
--- activemq/trunk/activemq-web/src/main/java/org/apache/activemq/web/LocalBrokerFacade.java (original)
+++ activemq/trunk/activemq-web/src/main/java/org/apache/activemq/web/LocalBrokerFacade.java Wed Jul 14 08:21:53 2010
@@ -19,6 +19,9 @@ package org.apache.activemq.web;
 import java.util.Iterator;
 import java.util.Set;
 
+import javax.management.ObjectName;
+import javax.management.QueryExp;
+
 import org.apache.activemq.broker.Broker;
 import org.apache.activemq.broker.BrokerService;
 import org.apache.activemq.broker.jmx.BrokerView;
@@ -74,5 +77,15 @@ public class LocalBrokerFacade extends B
             }
         }
     }
+
+    @Override
+    public Set queryNames(ObjectName name, QueryExp query) throws Exception {
+        return getManagementContext().queryNames(name, query);
+    }
+
+    @Override
+    public Object newProxyInstance(ObjectName objectName, Class interfaceClass, boolean notificationBroadcaster) {
+        return getManagementContext().newProxyInstance(objectName, interfaceClass, notificationBroadcaster);
+    }
     
 }

Modified: activemq/trunk/activemq-web/src/main/java/org/apache/activemq/web/RemoteJMXBrokerFacade.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-web/src/main/java/org/apache/activemq/web/RemoteJMXBrokerFacade.java?rev=963970&r1=963969&r2=963970&view=diff
==============================================================================
--- activemq/trunk/activemq-web/src/main/java/org/apache/activemq/web/RemoteJMXBrokerFacade.java (original)
+++ activemq/trunk/activemq-web/src/main/java/org/apache/activemq/web/RemoteJMXBrokerFacade.java Wed Jul 14 08:21:53 2010
@@ -28,6 +28,7 @@ import javax.management.MBeanServerConne
 import javax.management.MBeanServerInvocationHandler;
 import javax.management.MalformedObjectNameException;
 import javax.management.ObjectName;
+import javax.management.QueryExp;
 import javax.management.remote.JMXConnector;
 import javax.management.remote.JMXConnectorFactory;
 import javax.management.remote.JMXServiceURL;
@@ -240,4 +241,14 @@ public class RemoteJMXBrokerFacade exten
 		return answer;
     }
 
+    @Override
+    public Set queryNames(ObjectName name, QueryExp query) throws Exception {
+        return getMBeanServerConnection().queryNames(name, query);
+    }
+
+    @Override
+    public Object newProxyInstance(ObjectName objectName, Class interfaceClass,boolean notificationBroadcaster) throws Exception {
+        return MBeanServerInvocationHandler.newProxyInstance(getMBeanServerConnection(), objectName, interfaceClass, notificationBroadcaster);
+    }
+
 }