Author: rmannibucau Date: Fri Oct 18 09:25:00 2013 New Revision: 1533368 URL: http://svn.apache.org/r1533368 Log: TOMEE-1060 using a single http transport factory
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 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=1533368&r1=1533367&r2=1533368&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 Fri Oct 18 09:25:00 2013 @@ -24,12 +24,15 @@ import org.apache.openejb.core.webservic import org.apache.openejb.server.cxf.client.SaajInterceptor; import org.apache.openejb.server.cxf.ejb.EjbWsContainer; import org.apache.openejb.server.cxf.pojo.PojoWsContainer; +import org.apache.openejb.server.cxf.transport.HttpTransportFactory; import org.apache.openejb.server.cxf.transport.util.CxfUtil; import org.apache.openejb.server.httpd.HttpListener; import org.apache.openejb.server.webservices.WsService; import javax.naming.Context; import java.net.URL; +import java.util.ArrayList; +import java.util.List; import java.util.Map; import java.util.Properties; import java.util.TreeMap; @@ -39,6 +42,8 @@ public class CxfService extends WsServic private final Map<String, CxfWsContainer> wsContainers = new TreeMap<String, CxfWsContainer>(); + private HttpTransportFactory httpTransportFactory; + public String getName() { return "cxf"; } @@ -47,6 +52,16 @@ public class CxfService extends WsServic super.init(props); CxfUtil.configureBus(); SaajInterceptor.registerInterceptors(); + + initBusTransport(CxfUtil.getBus()); + } + + private void initBusTransport(final Bus bus) { + httpTransportFactory = new HttpTransportFactory(bus); + final List<String> ids = new ArrayList<String>(httpTransportFactory.getTransportIds().size() + 1); + ids.addAll(httpTransportFactory.getTransportIds()); + ids.add("http://schemas.xmlsoap.org/wsdl/soap/"); + httpTransportFactory.setTransportIds(ids); } @Override @@ -64,7 +79,7 @@ public class CxfService extends WsServic try { CxfCatalogUtils.loadOASISCatalog(bus, moduleBaseUrl, "META-INF/jax-ws-catalog.xml"); - final EjbWsContainer container = new EjbWsContainer(bus, port, beanContext, config); + final EjbWsContainer container = new EjbWsContainer(bus, httpTransportFactory, port, beanContext, config); container.start(); wsContainers.put(beanContext.getDeploymentID().toString(), container); return container; @@ -83,7 +98,7 @@ public class CxfService extends WsServic try { CxfCatalogUtils.loadOASISCatalog(bus, moduleBaseUrl, "META-INF/jax-ws-catalog.xml"); - PojoWsContainer container = new PojoWsContainer(loader, bus, port, context, target, bdgs, services); + PojoWsContainer container = new PojoWsContainer(loader, httpTransportFactory, bus, port, context, target, bdgs, services); container.start(); wsContainers.put(serviceId, container); return container; 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=1533368&r1=1533367&r2=1533368&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 Fri Oct 18 09:25:00 2013 @@ -23,40 +23,32 @@ import org.apache.cxf.transport.http.HTT 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.server.cxf.transport.HttpTransportFactory; import org.apache.openejb.server.cxf.transport.util.CxfUtil; import org.apache.openejb.server.httpd.HttpListener; import org.apache.openejb.server.httpd.HttpRequest; import org.apache.openejb.server.httpd.HttpResponse; import javax.management.ObjectName; -import java.util.ArrayList; -import java.util.List; public abstract class CxfWsContainer implements HttpListener { protected final Bus bus; protected final PortData port; protected AbstractHTTPDestination destination; protected CxfEndpoint endpoint; - protected final HTTPTransportFactory httpTransportFactory; + protected HTTPTransportFactory httpTransportFactory; protected final ServiceConfiguration serviceConfiguration; private ObjectName jmxName; - public CxfWsContainer(final Bus bus, final PortData port, final ServiceConfiguration config) { + public CxfWsContainer(final Bus bus, final HTTPTransportFactory httpTransportFactory, final PortData port, final ServiceConfiguration config) { this.bus = bus; this.port = port; this.serviceConfiguration = config; - - final List<String> ids = new ArrayList<String>(); - ids.add("http://schemas.xmlsoap.org/wsdl/soap/"); - - httpTransportFactory = new HttpTransportFactory(bus); - httpTransportFactory.setTransportIds(ids); + this.httpTransportFactory = httpTransportFactory; } public void start() { endpoint = createEndpoint(); - endpoint.publish("http://nopath"); + endpoint.publish("http://nopath" + endpoint.hashCode()); // needs to be unique destination = (AbstractHTTPDestination) endpoint.getServer().getDestination(); // register an MBean for this endpoint 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=1533368&r1=1533367&r2=1533368&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 Fri Oct 18 09:25:00 2013 @@ -18,6 +18,7 @@ package org.apache.openejb.server.cxf.ejb; import org.apache.cxf.Bus; +import org.apache.cxf.transport.http.HTTPTransportFactory; import org.apache.openejb.BeanContext; import org.apache.openejb.api.internal.Internal; import org.apache.openejb.api.jmx.Description; @@ -44,8 +45,8 @@ public class EjbWsContainer extends CxfW private final BeanContext beanContext; private WsServiceMBean mbean; - public EjbWsContainer(Bus bus, PortData port, BeanContext beanContext, ServiceConfiguration config) { - super(bus, port, config); + public EjbWsContainer(final Bus bus, final HTTPTransportFactory transportFactory, final PortData port, final BeanContext beanContext, final ServiceConfiguration config) { + super(bus, transportFactory, port, config); if (beanContext == null) throw new NullPointerException("deploymentInfo is null"); this.beanContext = beanContext; } 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=1533368&r1=1533367&r2=1533368&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 Fri Oct 18 09:25:00 2013 @@ -18,6 +18,7 @@ package org.apache.openejb.server.cxf.pojo; import org.apache.cxf.Bus; +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; @@ -48,9 +49,11 @@ public class PojoWsContainer extends Cxf 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) { - super(bus, port, configuration); + public PojoWsContainer(final ClassLoader loader, final HTTPTransportFactory transportFactory, + final Bus bus, final PortData port, final Context context, + final Class target, + final Map<String, Object> bdgs, final ServiceConfiguration configuration) { + super(bus, transportFactory, port, configuration); if (target == null) throw new NullPointerException("target is null"); this.context = context; this.target = target;