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 2012/07/09 16:43:31 UTC
svn commit: r1359194 - in /activemq/trunk:
activemq-core/src/main/java/org/apache/activemq/broker/
activemq-core/src/main/java/org/apache/activemq/broker/jmx/
activemq-core/src/main/java/org/apache/activemq/transport/
activemq-core/src/test/java/org/ap...
Author: dejanb
Date: Mon Jul 9 14:43:30 2012
New Revision: 1359194
URL: http://svn.apache.org/viewvc?rev=1359194&view=rev
Log:
https://issues.apache.org/jira/browse/AMQ-3918 - transport connector urls exposed using JMX
Added:
activemq/trunk/activemq-optional/src/main/java/org/apache/activemq/transport/WebTransportServerSupport.java
Modified:
activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/BrokerService.java
activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/jmx/BrokerView.java
activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/jmx/BrokerViewMBean.java
activemq/trunk/activemq-core/src/main/java/org/apache/activemq/transport/TransportServerSupport.java
activemq/trunk/activemq-core/src/test/java/org/apache/activemq/broker/jmx/MBeanTest.java
activemq/trunk/activemq-optional/src/main/java/org/apache/activemq/transport/http/HttpTransportServer.java
activemq/trunk/activemq-optional/src/main/java/org/apache/activemq/transport/ws/WSTransportServer.java
Modified: activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/BrokerService.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/BrokerService.java?rev=1359194&r1=1359193&r2=1359194&view=diff
==============================================================================
--- activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/BrokerService.java (original)
+++ activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/BrokerService.java Mon Jul 9 14:43:30 2012
@@ -2328,11 +2328,11 @@ public class BrokerService implements Se
if (policy != null) {
connector.setMessageAuthorizationPolicy(policy);
}
+ connector.getStatistics().setEnabled(enableStatistics);
+ connector.start();
if (isUseJmx()) {
connector = registerConnectorMBean(connector);
}
- connector.getStatistics().setEnabled(enableStatistics);
- connector.start();
return connector;
}
Modified: activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/jmx/BrokerView.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/jmx/BrokerView.java?rev=1359194&r1=1359193&r2=1359194&view=diff
==============================================================================
--- activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/jmx/BrokerView.java (original)
+++ activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/jmx/BrokerView.java Mon Jul 9 14:43:30 2012
@@ -23,6 +23,8 @@ import java.lang.reflect.Method;
import java.net.MalformedURLException;
import java.net.URI;
import java.net.URL;
+import java.util.HashMap;
+import java.util.Map;
import java.util.NoSuchElementException;
import java.util.concurrent.atomic.AtomicInteger;
import javax.management.ObjectName;
@@ -364,21 +366,54 @@ public class BrokerView implements Broke
}
}
+ public Map<String, String> getTransportConnectors() {
+ Map<String, String> answer = new HashMap<String, String>();
+ try {
+ for (TransportConnector connector : brokerService.getTransportConnectors()) {
+ answer.put(connector.getName(), connector.getConnectUri().toString());
+ }
+ } catch (Exception e) {
+ LOG.debug("Failed to read URI to build transport connectors map", e);
+ }
+ return answer;
+ }
+
+ @Override
+ public String getTransportConnectorByType(String type) {
+ return brokerService.getTransportConnectorURIsAsMap().get(type);
+ }
+
+ @Deprecated
+ /**
+ * @deprecated use {@link #getTransportConnectors()} or {@link #getTransportConnectorByType(String)}
+ */
public String getOpenWireURL() {
String answer = brokerService.getTransportConnectorURIsAsMap().get("tcp");
return answer != null ? answer : "";
}
+ @Deprecated
+ /**
+ * @deprecated use {@link #getTransportConnectors()} or {@link #getTransportConnectorByType(String)}
+ */
public String getStompURL() {
String answer = brokerService.getTransportConnectorURIsAsMap().get("stomp");
return answer != null ? answer : "";
}
+ @Deprecated
+ /**
+ * @deprecated use {@link #getTransportConnectors()} or {@link #getTransportConnectorByType(String)}
+ */
public String getSslURL() {
String answer = brokerService.getTransportConnectorURIsAsMap().get("ssl");
return answer != null ? answer : "";
}
+ @Deprecated
+ /**
+ * @deprecated use {@link #getTransportConnectors()} or {@link #getTransportConnectorByType(String)}
+ */
public String getStompSslURL() {
String answer = brokerService.getTransportConnectorURIsAsMap().get("stomp+ssl");
return answer != null ? answer : "";
Modified: activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/jmx/BrokerViewMBean.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/jmx/BrokerViewMBean.java?rev=1359194&r1=1359193&r2=1359194&view=diff
==============================================================================
--- activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/jmx/BrokerViewMBean.java (original)
+++ activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/jmx/BrokerViewMBean.java Mon Jul 9 14:43:30 2012
@@ -19,6 +19,8 @@ package org.apache.activemq.broker.jmx;
import javax.management.ObjectName;
import org.apache.activemq.Service;
+import java.util.Map;
+
/**
* @author David Martin Clavo david(dot)martin(dot)clavo(at)gmail.com (for the reloadLog4jProperties method)
@@ -249,21 +251,43 @@ public interface BrokerViewMBean extends
@MBeanInfo(value="Reloads log4j.properties from the classpath.")
public void reloadLog4jProperties() throws Throwable;
- @MBeanInfo("The url of the openwire connector")
+ /**
+ * @deprecated use {@link #getTransportConnectors()} or {@link #getTransportConnectorByType(String)}
+ */
+ @Deprecated
+ @MBeanInfo("The url of the openwire connector - deprecated, use getTransportConnectors or getTransportConnectorByType instead")
String getOpenWireURL();
- @MBeanInfo("The url of the stomp connector")
+ /**
+ * @deprecated use {@link #getTransportConnectors()} or {@link #getTransportConnectorByType(String)}
+ */
+ @Deprecated
+ @MBeanInfo("The url of the stomp connector - deprecated, use getTransportConnectors or getTransportConnectorByType instead")
String getStompURL();
- @MBeanInfo("The url of the SSL connector")
+ /**
+ * @deprecated use {@link #getTransportConnectors()} or {@link #getTransportConnectorByType(String)}
+ */
+ @Deprecated
+ @MBeanInfo("The url of the SSL connector - deprecated, use getTransportConnectors or getTransportConnectorByType instead")
String getSslURL();
- @MBeanInfo("The url of the Stomp SSL connector")
+ /**
+ * @deprecated use {@link #getTransportConnectors()} or {@link #getTransportConnectorByType(String)}
+ */
+ @Deprecated
+ @MBeanInfo("The url of the Stomp SSL connector - deprecated, use getTransportConnectors or getTransportConnectorByType instead")
String getStompSslURL();
@MBeanInfo("The url of the VM connector")
String getVMURL();
+ @MBeanInfo("The map of all defined transport connectors, with transport name as a key")
+ Map<String, String> getTransportConnectors();
+
+ @MBeanInfo("The url of transport connector by it's type; e.g. tcp, stomp, ssl, etc.")
+ String getTransportConnectorByType(String type);
+
@MBeanInfo("The location of the data directory")
public String getDataDirectory();
Modified: activemq/trunk/activemq-core/src/main/java/org/apache/activemq/transport/TransportServerSupport.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/transport/TransportServerSupport.java?rev=1359194&r1=1359193&r2=1359194&view=diff
==============================================================================
--- activemq/trunk/activemq-core/src/main/java/org/apache/activemq/transport/TransportServerSupport.java (original)
+++ activemq/trunk/activemq-core/src/main/java/org/apache/activemq/transport/TransportServerSupport.java Mon Jul 9 14:43:30 2012
@@ -88,4 +88,6 @@ public abstract class TransportServerSup
public void setTransportOption(Map<String, Object> transportOptions) {
this.transportOptions = transportOptions;
}
+
+
}
Modified: activemq/trunk/activemq-core/src/test/java/org/apache/activemq/broker/jmx/MBeanTest.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/test/java/org/apache/activemq/broker/jmx/MBeanTest.java?rev=1359194&r1=1359193&r2=1359194&view=diff
==============================================================================
--- activemq/trunk/activemq-core/src/test/java/org/apache/activemq/broker/jmx/MBeanTest.java (original)
+++ activemq/trunk/activemq-core/src/test/java/org/apache/activemq/broker/jmx/MBeanTest.java Mon Jul 9 14:43:30 2012
@@ -90,8 +90,9 @@ public class MBeanTest extends EmbeddedB
public void testConnectors() throws Exception{
ObjectName brokerName = assertRegisteredObjectName(domain + ":Type=Broker,BrokerName=localhost");
BrokerViewMBean broker = (BrokerViewMBean)MBeanServerInvocationHandler.newProxyInstance(mbeanServer, brokerName, BrokerViewMBean.class, true);
+
assertEquals("openwire URL port doesn't equal bind Address",
- new URI(broker.getOpenWireURL()).getPort(),
+ new URI(broker.getTransportConnectorByType("tcp")).getPort(),
new URI(this.broker.getTransportConnectors().get(0).getPublishableConnectString()).getPort());
}
Added: activemq/trunk/activemq-optional/src/main/java/org/apache/activemq/transport/WebTransportServerSupport.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-optional/src/main/java/org/apache/activemq/transport/WebTransportServerSupport.java?rev=1359194&view=auto
==============================================================================
--- activemq/trunk/activemq-optional/src/main/java/org/apache/activemq/transport/WebTransportServerSupport.java (added)
+++ activemq/trunk/activemq-optional/src/main/java/org/apache/activemq/transport/WebTransportServerSupport.java Mon Jul 9 14:43:30 2012
@@ -0,0 +1,56 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.activemq.transport;
+
+import org.apache.activemq.util.InetAddressUtil;
+import org.eclipse.jetty.server.Connector;
+import org.eclipse.jetty.server.Server;
+
+import java.net.InetAddress;
+import java.net.URI;
+
+abstract public class WebTransportServerSupport extends TransportServerSupport {
+
+ protected URI bindAddress;
+ protected Server server;
+ protected Connector connector;
+ protected SocketConnectorFactory socketConnectorFactory;
+ protected String host;
+
+ public WebTransportServerSupport(URI location) {
+ super(location);
+ }
+
+ public void bind() throws Exception {
+
+ URI bind = getBindLocation();
+
+ String bindHost = bind.getHost();
+ bindHost = (bindHost == null || bindHost.length() == 0) ? "localhost" : bindHost;
+ InetAddress addr = InetAddress.getByName(bindHost);
+ host = addr.getCanonicalHostName();
+ if (addr.isAnyLocalAddress()) {
+ host = InetAddressUtil.getLocalHostName();
+ }
+
+ connector.setHost(host);
+ connector.setPort(bindAddress.getPort());
+ connector.setServer(server);
+ server.addConnector(connector);
+
+ }
+}
Modified: activemq/trunk/activemq-optional/src/main/java/org/apache/activemq/transport/http/HttpTransportServer.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-optional/src/main/java/org/apache/activemq/transport/http/HttpTransportServer.java?rev=1359194&r1=1359193&r2=1359194&view=diff
==============================================================================
--- activemq/trunk/activemq-optional/src/main/java/org/apache/activemq/transport/http/HttpTransportServer.java (original)
+++ activemq/trunk/activemq-optional/src/main/java/org/apache/activemq/transport/http/HttpTransportServer.java Mon Jul 9 14:43:30 2012
@@ -19,6 +19,7 @@ package org.apache.activemq.transport.ht
import org.apache.activemq.command.BrokerInfo;
import org.apache.activemq.transport.SocketConnectorFactory;
import org.apache.activemq.transport.TransportServerSupport;
+import org.apache.activemq.transport.WebTransportServerSupport;
import org.apache.activemq.transport.util.TextWireFormat;
import org.apache.activemq.transport.xstream.XStreamWireFormat;
import org.apache.activemq.util.ServiceStopper;
@@ -28,18 +29,15 @@ import org.eclipse.jetty.server.handler.
import org.eclipse.jetty.servlet.ServletContextHandler;
import org.eclipse.jetty.servlet.ServletHolder;
+import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.URI;
import java.util.Map;
-public class HttpTransportServer extends TransportServerSupport {
+public class HttpTransportServer extends WebTransportServerSupport {
- private URI bindAddress;
private TextWireFormat wireFormat;
- private Server server;
- private Connector connector;
private HttpTransportFactory transportFactory;
- protected SocketConnectorFactory socketConnectorFactory;
public HttpTransportServer(URI uri, HttpTransportFactory factory) {
super(uri);
@@ -79,10 +77,9 @@ public class HttpTransportServer extends
if (connector == null) {
connector = socketConnectorFactory.createConnector();
}
- connector.setHost(bindAddress.getHost());
- connector.setPort(bindAddress.getPort());
- connector.setServer(server);
- server.addConnector(connector);
+
+ URI bind = getBindLocation();
+ bind();
ServletContextHandler contextHandler =
new ServletContextHandler(server, "/", ServletContextHandler.NO_SECURITY);
@@ -100,6 +97,7 @@ public class HttpTransportServer extends
contextHandler.setHandler(gzipHandler);
server.start();
+ setConnectURI(new URI(bind.getScheme(), bind.getUserInfo(), host, connector.getLocalPort(), bind.getPath(), bind.getQuery(), bind.getFragment()));
}
protected void doStop(ServiceStopper stopper) throws Exception {
Modified: activemq/trunk/activemq-optional/src/main/java/org/apache/activemq/transport/ws/WSTransportServer.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-optional/src/main/java/org/apache/activemq/transport/ws/WSTransportServer.java?rev=1359194&r1=1359193&r2=1359194&view=diff
==============================================================================
--- activemq/trunk/activemq-optional/src/main/java/org/apache/activemq/transport/ws/WSTransportServer.java (original)
+++ activemq/trunk/activemq-optional/src/main/java/org/apache/activemq/transport/ws/WSTransportServer.java Mon Jul 9 14:43:30 2012
@@ -20,6 +20,8 @@ package org.apache.activemq.transport.ws
import org.apache.activemq.command.BrokerInfo;
import org.apache.activemq.transport.SocketConnectorFactory;
import org.apache.activemq.transport.TransportServerSupport;
+import org.apache.activemq.transport.WebTransportServerSupport;
+import org.apache.activemq.util.InetAddressUtil;
import org.apache.activemq.util.ServiceStopper;
import org.eclipse.jetty.server.Connector;
import org.eclipse.jetty.server.Server;
@@ -27,6 +29,7 @@ import org.eclipse.jetty.server.nio.Sele
import org.eclipse.jetty.servlet.ServletContextHandler;
import org.eclipse.jetty.servlet.ServletHolder;
+import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.URI;
import java.util.Map;
@@ -35,12 +38,7 @@ import java.util.Map;
* Creates a web server and registers web socket server
*
*/
-public class WSTransportServer extends TransportServerSupport {
-
- private URI bindAddress;
- private Server server;
- private Connector connector;
- protected SocketConnectorFactory socketConnectorFactory;
+public class WSTransportServer extends WebTransportServerSupport {
public WSTransportServer(URI location) {
super(location);
@@ -50,13 +48,14 @@ public class WSTransportServer extends T
protected void doStart() throws Exception {
server = new Server();
+
if (connector == null) {
connector = socketConnectorFactory.createConnector();
}
- connector.setHost(bindAddress.getHost());
- connector.setPort(bindAddress.getPort());
- connector.setServer(server);
- server.addConnector(connector);
+
+ URI bind = getBindLocation();
+
+ bind();
ServletContextHandler contextHandler =
new ServletContextHandler(server, "/", ServletContextHandler.NO_SECURITY);
@@ -68,6 +67,7 @@ public class WSTransportServer extends T
contextHandler.setAttribute("acceptListener", getAcceptListener());
server.start();
+ setConnectURI(new URI(bind.getScheme(), bind.getUserInfo(), host, connector.getLocalPort(), bind.getPath(), bind.getQuery(), bind.getFragment()));
}
protected void doStop(ServiceStopper stopper) throws Exception {