You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by rm...@apache.org on 2013/10/03 08:31:05 UTC
svn commit: r1528729 - in /tomee/tomee/trunk/server:
openejb-cxf/src/main/java/org/apache/openejb/server/cxf/
openejb-cxf/src/main/java/org/apache/openejb/server/cxf/ejb/
openejb-cxf/src/main/java/org/apache/openejb/server/cxf/pojo/
openejb-cxf/src/tes...
Author: rmannibucau
Date: Thu Oct 3 06:31:05 2013
New Revision: 1528729
URL: http://svn.apache.org/r1528729
Log:
adding wsdl and slurp wsdl in cxf jaxws mbeans
Modified:
tomee/tomee/trunk/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/CxfService.java
tomee/tomee/trunk/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/CxfWsContainer.java
tomee/tomee/trunk/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/ejb/EjbWsContainer.java
tomee/tomee/trunk/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/pojo/PojoWsContainer.java
tomee/tomee/trunk/server/openejb-cxf/src/test/java/org/apache/openejb/server/cxf/WsJMXTest.java
tomee/tomee/trunk/server/openejb-webservices/src/main/java/org/apache/openejb/server/webservices/WsService.java
Modified: tomee/tomee/trunk/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/CxfService.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/CxfService.java?rev=1528729&r1=1528728&r2=1528729&view=diff
==============================================================================
--- tomee/tomee/trunk/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/CxfService.java (original)
+++ tomee/tomee/trunk/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/CxfService.java Thu Oct 3 06:31:05 2013
@@ -49,6 +49,13 @@ public class CxfService extends WsServic
SaajInterceptor.registerInterceptors();
}
+ @Override
+ protected void setWsdl(final HttpListener listener, final String wsdl) {
+ if (CxfWsContainer.class.isInstance(listener)) {
+ CxfWsContainer.class.cast(listener).setWsldUrl(wsdl);
+ }
+ }
+
protected HttpListener createEjbWsContainer(URL moduleBaseUrl, PortData port, BeanContext beanContext, ServiceConfiguration config) {
final Bus bus = CxfUtil.getBus();
Modified: tomee/tomee/trunk/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/CxfWsContainer.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/CxfWsContainer.java?rev=1528729&r1=1528728&r2=1528729&view=diff
==============================================================================
--- tomee/tomee/trunk/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/CxfWsContainer.java (original)
+++ tomee/tomee/trunk/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/CxfWsContainer.java Thu Oct 3 06:31:05 2013
@@ -20,13 +20,9 @@ package org.apache.openejb.server.cxf;
import org.apache.cxf.Bus;
import org.apache.cxf.transport.http.AbstractHTTPDestination;
import org.apache.cxf.transport.http.HTTPTransportFactory;
-import org.apache.openejb.api.internal.Internal;
-import org.apache.openejb.api.jmx.Description;
-import org.apache.openejb.api.jmx.MBean;
import org.apache.openejb.assembler.classic.util.ServiceConfiguration;
import org.apache.openejb.core.webservices.PortData;
import org.apache.openejb.monitoring.LocalMBeanServer;
-import org.apache.openejb.monitoring.ObjectNameBuilder;
import org.apache.openejb.server.cxf.transport.HttpTransportFactory;
import org.apache.openejb.server.cxf.transport.util.CxfUtil;
import org.apache.openejb.server.httpd.HttpListener;
@@ -34,7 +30,6 @@ import org.apache.openejb.server.httpd.H
import org.apache.openejb.server.httpd.HttpResponse;
import javax.management.ObjectName;
-import javax.management.openmbean.TabularData;
import java.util.ArrayList;
import java.util.List;
@@ -47,7 +42,6 @@ public abstract class CxfWsContainer imp
protected final ServiceConfiguration serviceConfiguration;
private ObjectName jmxName;
-
public CxfWsContainer(final Bus bus, final PortData port, final ServiceConfiguration config) {
this.bus = bus;
this.port = port;
@@ -72,6 +66,8 @@ public abstract class CxfWsContainer imp
protected abstract CxfEndpoint createEndpoint();
protected abstract ObjectName registerMBean();
+ protected abstract void setWsldUrl(String wsdl);
+
public void destroy() {
unregisterMBean();
Modified: tomee/tomee/trunk/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/ejb/EjbWsContainer.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/ejb/EjbWsContainer.java?rev=1528729&r1=1528728&r2=1528729&view=diff
==============================================================================
--- tomee/tomee/trunk/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/ejb/EjbWsContainer.java (original)
+++ tomee/tomee/trunk/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/ejb/EjbWsContainer.java Thu Oct 3 06:31:05 2013
@@ -28,17 +28,21 @@ import org.apache.openejb.assembler.clas
import org.apache.openejb.core.webservices.HandlerChainData;
import org.apache.openejb.core.webservices.HandlerData;
import org.apache.openejb.core.webservices.PortData;
+import org.apache.openejb.loader.IO;
import org.apache.openejb.monitoring.LocalMBeanServer;
import org.apache.openejb.monitoring.ObjectNameBuilder;
import org.apache.openejb.server.cxf.CxfWsContainer;
import javax.management.ObjectName;
import javax.management.openmbean.TabularData;
+import java.io.IOException;
+import java.net.URL;
import java.util.ArrayList;
import java.util.List;
public class EjbWsContainer extends CxfWsContainer {
private final BeanContext beanContext;
+ private WsServiceMBean mbean;
public EjbWsContainer(Bus bus, PortData port, BeanContext beanContext, ServiceConfiguration config) {
super(bus, port, config);
@@ -59,11 +63,16 @@ public class EjbWsContainer extends CxfW
.set("name", beanContext.getEjbName())
.build();
- final WsServiceMBean mbean = new WsServiceMBean(beanContext, port);
+ mbean = new WsServiceMBean(beanContext, port);
LocalMBeanServer.registerDynamicWrapperSilently(mbean, name);
return name;
}
+ @Override
+ protected void setWsldUrl(String wsdl) {
+ mbean.wsdl(wsdl);
+ }
+
@MBean
@Description("JAX-WS Service information")
@Internal
@@ -71,6 +80,7 @@ public class EjbWsContainer extends CxfW
private final BeanContext beanContext;
private final PortData port;
+ private String wsdl;
public WsServiceMBean(final BeanContext beanContext, final PortData port) {
this.beanContext = beanContext;
@@ -90,9 +100,19 @@ public class EjbWsContainer extends CxfW
}
@ManagedOperation
- @Description("")
+ @Description("Slurp the WSDL")
public String getWsdl() {
- return null;
+ try {
+ return IO.slurp(new URL(wsdl));
+ } catch (final IOException e) {
+ return e.getMessage();
+ }
+ }
+
+ @ManagedAttribute
+ @Description("The WSDL url")
+ public String getWsdlUrl() {
+ return wsdl;
}
@ManagedAttribute
@@ -147,5 +167,13 @@ public class EjbWsContainer extends CxfW
port.getProperties()
);
}
+
+ public void wsdl(final String wsdl) {
+ if (!wsdl.endsWith("?wsdl")) {
+ this.wsdl = wsdl + "?wsdl";
+ } else {
+ this.wsdl = wsdl;
+ }
+ }
}
}
Modified: tomee/tomee/trunk/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/pojo/PojoWsContainer.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/pojo/PojoWsContainer.java?rev=1528729&r1=1528728&r2=1528729&view=diff
==============================================================================
--- tomee/tomee/trunk/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/pojo/PojoWsContainer.java (original)
+++ tomee/tomee/trunk/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/pojo/PojoWsContainer.java Thu Oct 3 06:31:05 2013
@@ -27,6 +27,7 @@ import org.apache.openejb.assembler.clas
import org.apache.openejb.core.webservices.HandlerChainData;
import org.apache.openejb.core.webservices.HandlerData;
import org.apache.openejb.core.webservices.PortData;
+import org.apache.openejb.loader.IO;
import org.apache.openejb.monitoring.LocalMBeanServer;
import org.apache.openejb.monitoring.ObjectNameBuilder;
import org.apache.openejb.server.cxf.CxfWsContainer;
@@ -34,6 +35,8 @@ import org.apache.openejb.server.cxf.Cxf
import javax.management.ObjectName;
import javax.management.openmbean.TabularData;
import javax.naming.Context;
+import java.io.IOException;
+import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@@ -43,6 +46,7 @@ public class PojoWsContainer extends Cxf
private final Class target;
private final Map<String, Object> bindings;
private final ClassLoader loader;
+ private WsServiceMBean mbean;
public PojoWsContainer(ClassLoader loader, Bus bus, PortData port, Context context, Class target,
Map<String, Object> bdgs, ServiceConfiguration configuration) {
@@ -68,11 +72,16 @@ public class PojoWsContainer extends Cxf
.set("name", target.getSimpleName())
.build();
- final WsServiceMBean mbean = new WsServiceMBean(context, target, port);
+ mbean = new WsServiceMBean(context, target, port);
LocalMBeanServer.registerDynamicWrapperSilently(mbean, name);
return name;
}
+ @Override
+ protected void setWsldUrl(final String wsdl) {
+ mbean.wsdl(wsdl);
+ }
+
@MBean
@Description("JAX-WS Service information")
@Internal
@@ -81,6 +90,7 @@ public class PojoWsContainer extends Cxf
private final Context context;
private final Class target;
private final PortData port;
+ private String wsdl;
public WsServiceMBean(final Context context, final Class target, final PortData port) {
this.context = context;
@@ -89,9 +99,19 @@ public class PojoWsContainer extends Cxf
}
@ManagedOperation
- @Description("")
+ @Description("Slurp the WSDL")
public String getWsdl() {
- return null;
+ try {
+ return IO.slurp(new URL(wsdl));
+ } catch (final IOException e) {
+ return e.getMessage();
+ }
+ }
+
+ @ManagedAttribute
+ @Description("The WSDL url")
+ public String getWsdlUrl() {
+ return wsdl;
}
@ManagedAttribute
@@ -146,5 +166,13 @@ public class PojoWsContainer extends Cxf
port.getProperties()
);
}
+
+ public void wsdl(final String wsdl) {
+ if (!wsdl.endsWith("?wsdl")) {
+ this.wsdl = wsdl + "?wsdl";
+ } else {
+ this.wsdl = wsdl;
+ }
+ }
}
}
Modified: tomee/tomee/trunk/server/openejb-cxf/src/test/java/org/apache/openejb/server/cxf/WsJMXTest.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/server/openejb-cxf/src/test/java/org/apache/openejb/server/cxf/WsJMXTest.java?rev=1528729&r1=1528728&r2=1528729&view=diff
==============================================================================
--- tomee/tomee/trunk/server/openejb-cxf/src/test/java/org/apache/openejb/server/cxf/WsJMXTest.java (original)
+++ tomee/tomee/trunk/server/openejb-cxf/src/test/java/org/apache/openejb/server/cxf/WsJMXTest.java Thu Oct 3 06:31:05 2013
@@ -24,6 +24,7 @@ import org.apache.openejb.monitoring.Loc
import org.apache.openejb.testing.Classes;
import org.apache.openejb.testing.EnableServices;
import org.apache.openejb.testing.Module;
+import org.hamcrest.CoreMatchers;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
@@ -37,6 +38,7 @@ import javax.management.MalformedObjectN
import javax.management.ObjectName;
import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertThat;
import static org.junit.Assert.assertTrue;
@EnableServices("jax-ws")
@@ -73,6 +75,8 @@ public class WsJMXTest {
public void checkServiceWasDeployed() throws Exception {
assertTrue(LocalMBeanServer.get().isRegistered(names[0]));
assertTrue(LocalMBeanServer.get().isRegistered(names[1]));
+ assertThat(String.class.cast(LocalMBeanServer.get().invoke(names[0], "getWsdl", new Object[0], new String[0])), CoreMatchers.containsString("<soap:address location=\"http://127.0.0.1:4204/app/AnEjbEndpoint\"/>"));
+ assertThat(String.class.cast(LocalMBeanServer.get().invoke(names[1], "getWsdl", new Object[0], new String[0])), CoreMatchers.containsString("<soap:address location=\"http://127.0.0.1:4204/app/AnPojoEndpointService\"/>"));
}
@AfterClass
Modified: tomee/tomee/trunk/server/openejb-webservices/src/main/java/org/apache/openejb/server/webservices/WsService.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/server/openejb-webservices/src/main/java/org/apache/openejb/server/webservices/WsService.java?rev=1528729&r1=1528728&r2=1528729&view=diff
==============================================================================
--- tomee/tomee/trunk/server/openejb-webservices/src/main/java/org/apache/openejb/server/webservices/WsService.java (original)
+++ tomee/tomee/trunk/server/openejb-webservices/src/main/java/org/apache/openejb/server/webservices/WsService.java Thu Oct 3 06:31:05 2013
@@ -310,6 +310,7 @@ public abstract class WsService implemen
if (address != null) {
// register wsdl location
portAddressRegistry.addPort(portInfo.serviceId, portInfo.wsdlService, portInfo.portId, portInfo.wsdlPort, portInfo.seiInterfaceName, address);
+ setWsdl(container, address);
logger.info("Webservice(wsdl=" + address + ", qname=" + port.getWsdlService() + ") --> Ejb(id=" + portInfo.portId + ")");
ejbAddresses.put(bean.ejbDeploymentId, address);
addressesForApp(appInfo.appId).add(new EndpointInfo(address, port.getWsdlService(), beanContext.getBeanClass().getName()));
@@ -330,6 +331,10 @@ public abstract class WsService implemen
} // else called because of ear case where new ejbs are deployed in webapps
}
+ protected void setWsdl(final HttpListener listener, final String wsdl) {
+ // no-op
+ }
+
private List<EndpointInfo> addressesForApp(final String appId) {
if (!addressesByApplication.containsKey(appId)) {
addressesByApplication.put(appId, new ArrayList<EndpointInfo>());
@@ -405,6 +410,7 @@ public abstract class WsService implemen
// add address to global registry
portAddressRegistry.addPort(portInfo.serviceId, portInfo.wsdlService, portInfo.portId, portInfo.wsdlPort, portInfo.seiInterfaceName, address);
+ setWsdl(container, address);
logger.info("Webservice(wsdl=" + address + ", qname=" + port.getWsdlService() + ") --> Pojo(id=" + portInfo.portId + ")");
servletAddresses.put(webApp.moduleId + "." + servlet.servletName, address);
addressesForApp(webApp.moduleId).add(new EndpointInfo(address, port.getWsdlService(), target.getName()));