You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by dk...@apache.org on 2011/03/16 03:34:27 UTC
svn commit: r1082031 - in /cxf/trunk:
rt/core/src/main/java/org/apache/cxf/endpoint/
systests/uncategorized/src/test/java/org/apache/cxf/systest/management/
Author: dkulp
Date: Wed Mar 16 02:34:27 2011
New Revision: 1082031
URL: http://svn.apache.org/viewvc?rev=1082031&view=rev
Log:
[CXF-3398] Allow the user to set the servicename and portname that the
management stuff uses for the JMS ObjectName.
Modified:
cxf/trunk/rt/core/src/main/java/org/apache/cxf/endpoint/AbstractEndpointFactory.java
cxf/trunk/rt/core/src/main/java/org/apache/cxf/endpoint/ManagedEndpoint.java
cxf/trunk/systests/uncategorized/src/test/java/org/apache/cxf/systest/management/ManagedBusTest.java
Modified: cxf/trunk/rt/core/src/main/java/org/apache/cxf/endpoint/AbstractEndpointFactory.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/core/src/main/java/org/apache/cxf/endpoint/AbstractEndpointFactory.java?rev=1082031&r1=1082030&r2=1082031&view=diff
==============================================================================
--- cxf/trunk/rt/core/src/main/java/org/apache/cxf/endpoint/AbstractEndpointFactory.java (original)
+++ cxf/trunk/rt/core/src/main/java/org/apache/cxf/endpoint/AbstractEndpointFactory.java Wed Mar 16 02:34:27 2011
@@ -19,6 +19,7 @@
package org.apache.cxf.endpoint;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
@@ -151,6 +152,12 @@ public abstract class AbstractEndpointFa
public Map<String, Object> getProperties() {
return properties;
}
+ public Map<String, Object> getProperties(boolean create) {
+ if (create && properties == null) {
+ properties = new HashMap<String, Object>();
+ }
+ return properties;
+ }
public void setProperties(Map<String, Object> properties) {
this.properties = properties;
Modified: cxf/trunk/rt/core/src/main/java/org/apache/cxf/endpoint/ManagedEndpoint.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/core/src/main/java/org/apache/cxf/endpoint/ManagedEndpoint.java?rev=1082031&r1=1082030&r2=1082031&view=diff
==============================================================================
--- cxf/trunk/rt/core/src/main/java/org/apache/cxf/endpoint/ManagedEndpoint.java (original)
+++ cxf/trunk/rt/core/src/main/java/org/apache/cxf/endpoint/ManagedEndpoint.java Wed Mar 16 02:34:27 2011
@@ -23,6 +23,7 @@ import javax.management.JMException;
import javax.management.ObjectName;
import org.apache.cxf.Bus;
+import org.apache.cxf.common.util.StringUtils;
import org.apache.cxf.management.ManagedComponent;
import org.apache.cxf.management.ManagementConstants;
import org.apache.cxf.management.annotation.ManagedAttribute;
@@ -33,6 +34,8 @@ import org.apache.cxf.management.annotat
description = "Responsible for managing server instances.")
public class ManagedEndpoint implements ManagedComponent, ServerLifeCycleListener {
+ public static final String ENDPOINT_NAME = "managed.endpoint.name";
+ public static final String SERVICE_NAME = "managed.service.name";
private Bus bus;
private Endpoint endpoint;
@@ -91,9 +94,19 @@ public class ManagedEndpoint implements
buffer.append(ManagementConstants.TYPE_PROP + "=" + "Bus.Service.Endpoint,");
- String serviceName = ObjectName.quote(endpoint.getService().getName().toString());
+ String serviceName = (String)endpoint.get(SERVICE_NAME);
+ if (StringUtils.isEmpty(serviceName)) {
+ serviceName = endpoint.getService().getName().toString();
+ }
+ serviceName = ObjectName.quote(serviceName);
buffer.append(ManagementConstants.SERVICE_NAME_PROP + "=" + serviceName + ",");
- String endpointName = ObjectName.quote(endpoint.getEndpointInfo().getName().getLocalPart());
+
+
+ String endpointName = (String)endpoint.get(ENDPOINT_NAME);
+ if (StringUtils.isEmpty(endpointName)) {
+ endpointName = endpoint.getEndpointInfo().getName().getLocalPart();
+ }
+ endpointName = ObjectName.quote(endpointName);
buffer.append(ManagementConstants.PORT_NAME_PROP + "=" + endpointName);
//Use default domain name of server
Modified: cxf/trunk/systests/uncategorized/src/test/java/org/apache/cxf/systest/management/ManagedBusTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/systests/uncategorized/src/test/java/org/apache/cxf/systest/management/ManagedBusTest.java?rev=1082031&r1=1082030&r2=1082031&view=diff
==============================================================================
--- cxf/trunk/systests/uncategorized/src/test/java/org/apache/cxf/systest/management/ManagedBusTest.java (original)
+++ cxf/trunk/systests/uncategorized/src/test/java/org/apache/cxf/systest/management/ManagedBusTest.java Wed Mar 16 02:34:27 2011
@@ -19,6 +19,7 @@
package org.apache.cxf.systest.management;
+import java.lang.management.ManagementFactory;
import java.util.Iterator;
import java.util.Set;
@@ -28,19 +29,63 @@ import javax.management.ObjectName;
import org.apache.cxf.Bus;
import org.apache.cxf.bus.spring.SpringBusFactory;
import org.apache.cxf.helpers.CastUtils;
+import org.apache.cxf.jaxws.JaxWsServerFactoryBean;
import org.apache.cxf.management.InstrumentationManager;
import org.apache.cxf.management.ManagementConstants;
import org.apache.cxf.management.jmx.InstrumentationManagerImpl;
import org.apache.cxf.testutil.common.TestUtil;
import org.apache.cxf.workqueue.WorkQueueManager;
+import org.apache.hello_world_soap_http.Greeter;
+import org.apache.hello_world_soap_http.GreeterImpl;
+
import org.junit.Assert;
import org.junit.Test;
public class ManagedBusTest extends Assert {
public static final String JMX_PORT1 = TestUtil.getPortNumber("Server.1");
public static final String JMX_PORT2 = TestUtil.getPortNumber(ManagedBusTest.class, 3);
+ public static final String SERVICE_PORT = TestUtil.getPortNumber(ManagedBusTest.class, 4);
@Test
+ public void testTwoSameNamedEndpoint() throws Exception {
+ SpringBusFactory factory = new SpringBusFactory();
+ Bus bus = factory.createBus();
+ try {
+ InstrumentationManager im = bus.getExtension(InstrumentationManager.class);
+ assertNotNull(im);
+ InstrumentationManagerImpl imi = (InstrumentationManagerImpl)im;
+ imi.setServer(ManagementFactory.getPlatformMBeanServer());
+ imi.setEnabled(true);
+ imi.init();
+
+
+ Greeter greeter1 = new GreeterImpl();
+ JaxWsServerFactoryBean svrFactory = new JaxWsServerFactoryBean();
+ svrFactory.setAddress("http://localhost:" + SERVICE_PORT + "/Hello");
+ svrFactory.setServiceBean(greeter1);
+ svrFactory.getProperties(true).put("managed.endpoint.name", "greeter1");
+ svrFactory.create();
+
+ Greeter greeter2 = new GreeterImpl();
+ svrFactory = new JaxWsServerFactoryBean();
+ svrFactory.setAddress("http://localhost:" + SERVICE_PORT + "/Hello2");
+ svrFactory.setServiceBean(greeter2);
+ svrFactory.getProperties(true).put("managed.endpoint.name", "greeter2");
+ svrFactory.create();
+
+ MBeanServer mbs = im.getMBeanServer();
+
+ ObjectName name = new ObjectName(ManagementConstants.DEFAULT_DOMAIN_NAME
+ + ":type=Bus.Service.Endpoint,*");
+ Set s = mbs.queryMBeans(name, null);
+ assertEquals(2, s.size());
+ } finally {
+ bus.shutdown(true);
+ }
+
+ }
+
+ @Test
public void testManagedSpringBus() throws Exception {
SpringBusFactory factory = new SpringBusFactory();
Bus bus = factory.createBus();