You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by xu...@apache.org on 2009/10/31 14:30:19 UTC

svn commit: r831537 - in /geronimo/server/branches/2.2/plugins/activemq: activemq-broker/src/main/plan/ activemq-broker/src/main/resources/ geronimo-activemq/src/main/java/org/apache/geronimo/activemq/ geronimo-activemq/src/main/java/org/apache/geronim...

Author: xuhaihong
Date: Sat Oct 31 13:30:18 2009
New Revision: 831537

URL: http://svn.apache.org/viewvc?rev=831537&view=rev
Log:
GERONIMO-4941 JMS connector ports are not listed on the console after the server started

Added:
    geronimo/server/branches/2.2/plugins/activemq/geronimo-activemq/src/main/java/org/apache/geronimo/activemq/ActiveMQBrokerServiceMonitorGBean.java   (with props)
Modified:
    geronimo/server/branches/2.2/plugins/activemq/activemq-broker/src/main/plan/plan.xml
    geronimo/server/branches/2.2/plugins/activemq/activemq-broker/src/main/resources/activemq-template.xml
    geronimo/server/branches/2.2/plugins/activemq/activemq-broker/src/main/resources/activemq.xml
    geronimo/server/branches/2.2/plugins/activemq/geronimo-activemq/src/main/java/org/apache/geronimo/activemq/management/ActiveMQTransportConnector.java

Modified: geronimo/server/branches/2.2/plugins/activemq/activemq-broker/src/main/plan/plan.xml
URL: http://svn.apache.org/viewvc/geronimo/server/branches/2.2/plugins/activemq/activemq-broker/src/main/plan/plan.xml?rev=831537&r1=831536&r2=831537&view=diff
==============================================================================
--- geronimo/server/branches/2.2/plugins/activemq/activemq-broker/src/main/plan/plan.xml (original)
+++ geronimo/server/branches/2.2/plugins/activemq/activemq-broker/src/main/plan/plan.xml Sat Oct 31 13:30:18 2009
@@ -38,5 +38,6 @@
             <name>MBeanServerReference</name>
         </reference>
     </gbean>
-
+    
+    <gbean name="ActiveMQBrokerServiceMonitor" class="org.apache.geronimo.activemq.ActiveMQBrokerServiceMonitorGBean"/>
 </module>

Modified: geronimo/server/branches/2.2/plugins/activemq/activemq-broker/src/main/resources/activemq-template.xml
URL: http://svn.apache.org/viewvc/geronimo/server/branches/2.2/plugins/activemq/activemq-broker/src/main/resources/activemq-template.xml?rev=831537&r1=831536&r2=831537&view=diff
==============================================================================
--- geronimo/server/branches/2.2/plugins/activemq/activemq-broker/src/main/resources/activemq-template.xml (original)
+++ geronimo/server/branches/2.2/plugins/activemq/activemq-broker/src/main/resources/activemq-template.xml Sat Oct 31 13:30:18 2009
@@ -27,7 +27,7 @@
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
   http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core.xsd   
-  http://activemq.apache.org/camel/schema/spring http://activemq.apache.org/camel/schema/spring/camel-spring.xsd">
+  http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd">
 
     <!-- Allows us to use system properties as variables in this configuration file-->
     <bean class="org.apache.geronimo.activemq.GeronimoPropertyPlaceholderConfigurer">
@@ -196,7 +196,7 @@
       
        http://activemq.apache.org/enterprise-integration-patterns.html
     
-    <camelContext id="camel" xmlns="http://activemq.apache.org/camel/schema/spring">
+    <camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">
      -->
      <!--</camelContext>-->
 

Modified: geronimo/server/branches/2.2/plugins/activemq/activemq-broker/src/main/resources/activemq.xml
URL: http://svn.apache.org/viewvc/geronimo/server/branches/2.2/plugins/activemq/activemq-broker/src/main/resources/activemq.xml?rev=831537&r1=831536&r2=831537&view=diff
==============================================================================
--- geronimo/server/branches/2.2/plugins/activemq/activemq-broker/src/main/resources/activemq.xml (original)
+++ geronimo/server/branches/2.2/plugins/activemq/activemq-broker/src/main/resources/activemq.xml Sat Oct 31 13:30:18 2009
@@ -27,7 +27,7 @@
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
   http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core.xsd   
-  http://activemq.apache.org/camel/schema/spring http://activemq.apache.org/camel/schema/spring/camel-spring.xsd">
+  http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd">
 
     <!-- Allows us to use system properties as variables in this configuration file-->
     <bean class="org.apache.geronimo.activemq.GeronimoPropertyPlaceholderConfigurer">
@@ -197,7 +197,7 @@
       
        http://activemq.apache.org/enterprise-integration-patterns.html
     
-    <camelContext id="camel" xmlns="http://activemq.apache.org/camel/schema/spring">
+    <camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">
      -->
      <!--</camelContext>-->
 

Added: geronimo/server/branches/2.2/plugins/activemq/geronimo-activemq/src/main/java/org/apache/geronimo/activemq/ActiveMQBrokerServiceMonitorGBean.java
URL: http://svn.apache.org/viewvc/geronimo/server/branches/2.2/plugins/activemq/geronimo-activemq/src/main/java/org/apache/geronimo/activemq/ActiveMQBrokerServiceMonitorGBean.java?rev=831537&view=auto
==============================================================================
--- geronimo/server/branches/2.2/plugins/activemq/geronimo-activemq/src/main/java/org/apache/geronimo/activemq/ActiveMQBrokerServiceMonitorGBean.java (added)
+++ geronimo/server/branches/2.2/plugins/activemq/geronimo-activemq/src/main/java/org/apache/geronimo/activemq/ActiveMQBrokerServiceMonitorGBean.java Sat Oct 31 13:30:18 2009
@@ -0,0 +1,113 @@
+
+package org.apache.geronimo.activemq;
+
+import java.net.URI;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
+
+import org.apache.activemq.broker.BrokerService;
+import org.apache.activemq.broker.TransportConnector;
+import org.apache.geronimo.activemq.management.ActiveMQTransportConnector;
+import org.apache.geronimo.gbean.AbstractName;
+import org.apache.geronimo.gbean.AbstractNameQuery;
+import org.apache.geronimo.gbean.GBeanData;
+import org.apache.geronimo.gbean.GBeanInfo;
+import org.apache.geronimo.gbean.GBeanInfoBuilder;
+import org.apache.geronimo.gbean.GBeanLifecycle;
+import org.apache.geronimo.gbean.annotation.AnnotationGBeanInfoFactory;
+import org.apache.geronimo.gbean.annotation.ParamSpecial;
+import org.apache.geronimo.gbean.annotation.SpecialAttributeType;
+import org.apache.geronimo.kernel.Kernel;
+import org.apache.geronimo.kernel.lifecycle.LifecycleListener;
+
+public class ActiveMQBrokerServiceMonitorGBean implements GBeanLifecycle, LifecycleListener {
+
+    private Kernel kernel;
+
+    private Map<AbstractName, List<AbstractName>> brokerNameConnectorNamesMap = new ConcurrentHashMap<AbstractName, List<AbstractName>>();
+
+    private ClassLoader classLoader;
+
+    public ActiveMQBrokerServiceMonitorGBean(@ParamSpecial(type = SpecialAttributeType.kernel) Kernel kernel, @ParamSpecial(type = SpecialAttributeType.classLoader) ClassLoader classLoader) {
+        this.kernel = kernel;
+        this.classLoader = classLoader;
+    }
+
+    public void doFail() {
+        kernel.getLifecycleMonitor().removeLifecycleListener(this);
+    }
+
+    public void doStart() throws Exception {
+        AbstractNameQuery brokerServiceQuery = new AbstractNameQuery(new URI("?#org.apache.geronimo.activemq.BrokerServiceGBean"));
+        kernel.getLifecycleMonitor().addLifecycleListener(this, brokerServiceQuery);
+        Set<AbstractName> brokerServiceNames = kernel.listGBeans(brokerServiceQuery);
+        for (AbstractName brokerServiceName : brokerServiceNames) {
+            if (kernel.isRunning(brokerServiceName)) {
+                startConnectorWrapperGBeans(brokerServiceName);
+            }
+        }
+    }
+
+    public void doStop() throws Exception {
+        kernel.getLifecycleMonitor().removeLifecycleListener(this);
+    }
+
+    public void failed(AbstractName abstractName) {
+        stopConnectorWrapperGBeans(abstractName);
+    }
+
+    public void loaded(AbstractName abstractName) {
+    }
+
+    public void running(AbstractName abstractName) {
+        startConnectorWrapperGBeans(abstractName);
+    }
+
+    public void starting(AbstractName abstractName) {
+    }
+
+    public void stopped(AbstractName abstractName) {
+        stopConnectorWrapperGBeans(abstractName);
+    }
+
+    public void stopping(AbstractName abstractName) {
+    }
+
+    public void unloaded(AbstractName abstractName) {
+    }
+
+    protected void startConnectorWrapperGBeans(AbstractName brokerAbstractName) {
+        try {
+            BrokerService brokerService = ((BrokerServiceGBean) kernel.getGBean(brokerAbstractName)).getBrokerContainer();
+            List<AbstractName> connectorNames = new ArrayList<AbstractName>();
+            GBeanInfo gBeanInfo = new AnnotationGBeanInfoFactory().getGBeanInfo(ActiveMQTransportConnector.class);
+            for (TransportConnector transportConnector : brokerService.getTransportConnectors()) {
+                AbstractName connectorAbName = kernel.getNaming().createSiblingName(brokerAbstractName, transportConnector.getUri().toString().replace(':', '_'), GBeanInfoBuilder.DEFAULT_J2EE_TYPE);
+                GBeanData gbeanData = new GBeanData(connectorAbName, gBeanInfo);
+                gbeanData.setAttribute("transportConnector", transportConnector);
+                kernel.loadGBean(gbeanData, classLoader);
+                kernel.startGBean(connectorAbName);
+                connectorNames.add(connectorAbName);
+            }
+            brokerNameConnectorNamesMap.put(brokerAbstractName, connectorNames);
+        } catch (Exception e) {
+        }
+    }
+
+    protected void stopConnectorWrapperGBeans(AbstractName brokerAbstractName) {
+        List<AbstractName> connectorNames = brokerNameConnectorNamesMap.remove(brokerAbstractName);
+        if (connectorNames == null) {
+            return;
+        }
+        for (AbstractName connectorName : connectorNames) {
+            try {
+                kernel.stopGBean(connectorName);
+                kernel.unloadGBean(connectorName);
+            } catch (Exception e) {
+            }
+        }
+    }
+}

Propchange: geronimo/server/branches/2.2/plugins/activemq/geronimo-activemq/src/main/java/org/apache/geronimo/activemq/ActiveMQBrokerServiceMonitorGBean.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/server/branches/2.2/plugins/activemq/geronimo-activemq/src/main/java/org/apache/geronimo/activemq/ActiveMQBrokerServiceMonitorGBean.java
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: geronimo/server/branches/2.2/plugins/activemq/geronimo-activemq/src/main/java/org/apache/geronimo/activemq/ActiveMQBrokerServiceMonitorGBean.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: geronimo/server/branches/2.2/plugins/activemq/geronimo-activemq/src/main/java/org/apache/geronimo/activemq/management/ActiveMQTransportConnector.java
URL: http://svn.apache.org/viewvc/geronimo/server/branches/2.2/plugins/activemq/geronimo-activemq/src/main/java/org/apache/geronimo/activemq/management/ActiveMQTransportConnector.java?rev=831537&r1=831536&r2=831537&view=diff
==============================================================================
--- geronimo/server/branches/2.2/plugins/activemq/geronimo-activemq/src/main/java/org/apache/geronimo/activemq/management/ActiveMQTransportConnector.java (original)
+++ geronimo/server/branches/2.2/plugins/activemq/geronimo-activemq/src/main/java/org/apache/geronimo/activemq/management/ActiveMQTransportConnector.java Sat Oct 31 13:30:18 2009
@@ -17,36 +17,36 @@
  * under the License.
  */
 
-
 package org.apache.geronimo.activemq.management;
 
-import java.net.UnknownHostException;
 import java.net.InetSocketAddress;
-import java.net.URISyntaxException;
-import java.io.IOException;
+import java.net.UnknownHostException;
 
-import org.apache.geronimo.activemq.ActiveMQConnector;
 import org.apache.activemq.broker.TransportConnector;
+import org.apache.geronimo.activemq.ActiveMQConnector;
+import org.apache.geronimo.gbean.annotation.GBean;
+import org.apache.geronimo.gbean.annotation.ParamAttribute;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 /**
- * @version $Rev:$ $Date:$
+ * @version $Rev$ $Date$
  */
+@GBean(name="ActiveMQ Transport Connector")
 public class ActiveMQTransportConnector implements ActiveMQConnector {
 
     private static final Logger log = LoggerFactory.getLogger(ActiveMQTransportConnector.class);
 
     private final TransportConnector transportConnector;
 
-    public ActiveMQTransportConnector(TransportConnector transportConnector) {
+    public ActiveMQTransportConnector(@ParamAttribute(manageable = false, name = "transportConnector") TransportConnector transportConnector) {
         this.transportConnector = transportConnector;
     }
 
     // Additional stuff you can add to an ActiveMQ connector URI
     public String getPath() {
         try {
-            return transportConnector.getConnectUri().toString();
+            return transportConnector.getUri().toString();
         } catch (Exception e) {
             log.warn("error", e);
             return "Error: " + e.getMessage();
@@ -60,7 +60,7 @@
     //????
     public String getQuery() {
         try {
-            return transportConnector.getConnectUri().getQuery();
+            return transportConnector.getUri().getQuery();
         } catch (Exception e) {
             log.warn("error", e);
             return "Error: " + e.getMessage();
@@ -76,7 +76,7 @@
      */
     public String getProtocol() {
         try {
-            return transportConnector.getConnectUri().getScheme();
+            return transportConnector.getUri().getScheme();
         } catch (Exception e) {
             log.warn("error", e);
             return "Error: " + e.getMessage();
@@ -88,7 +88,7 @@
      */
     public int getPort() {
         try {
-            return transportConnector.getConnectUri().getPort();
+            return transportConnector.getUri().getPort();
         } catch (Exception e) {
             log.warn("error", e);
             return -1;
@@ -107,7 +107,7 @@
      */
     public String getHost() {
         try {
-            return transportConnector.getConnectUri().getHost();
+            return transportConnector.getUri().getHost();
         } catch (Exception e) {
             log.warn("error", e);
             return "Error: " + e.getMessage();