Repository: tomee
Updated Branches:
  refs/heads/master ed37f9ee3 -> ff7c4dba6


TOMEE-1545 adding openejb.cxf-rs.factoryByListener entry for cxf-rs service to 
be able to not share a single http destination factory


Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/ff7c4dba
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/ff7c4dba
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/ff7c4dba

Branch: refs/heads/master
Commit: ff7c4dba62cf05ea0add494ef095aec1dbc7a88f
Parents: ed37f9e
Author: Romain manni-Bucau <rmannibu...@gmail.com>
Authored: Tue Jul 19 19:03:57 2016 +0200
Committer: Romain manni-Bucau <rmannibu...@gmail.com>
Committed: Tue Jul 19 19:03:57 2016 +0200

----------------------------------------------------------------------
 .../org/apache/openejb/server/cxf/rs/CxfRSService.java   |  4 +++-
 .../java/org/apache/openejb/server/cxf/CxfService.java   | 11 ++++++++---
 2 files changed, 11 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/ff7c4dba/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRSService.java
----------------------------------------------------------------------
diff --git 
a/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRSService.java
 
b/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRSService.java
index f8ff509..020d7c1 100644
--- 
a/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRSService.java
+++ 
b/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRSService.java
@@ -92,6 +92,7 @@ public class CxfRSService extends RESTService {
 
     private static final String NAME = "cxf-rs";
     private DestinationFactory destinationFactory;
+    private boolean factoryByListener;
 
     @Override
     public void service(final InputStream in, final OutputStream out) throws 
ServiceException, IOException {
@@ -170,6 +171,7 @@ public class CxfRSService extends RESTService {
     @Override
     public void init(final Properties properties) throws Exception {
         super.init(properties);
+        factoryByListener = 
"true".equalsIgnoreCase(properties.getProperty("openejb.cxf-rs.factoryByListener",
 "false"));
 
         System.setProperty("org.apache.johnzon.max-string-length",
                 
SystemInstance.get().getProperty("org.apache.johnzon.max-string-length",
@@ -289,7 +291,7 @@ public class CxfRSService extends RESTService {
 
     @Override
     protected RsHttpListener createHttpListener() {
-        return new CxfRsHttpListener(destinationFactory, getWildcard());
+        return new CxfRsHttpListener(!factoryByListener ? destinationFactory : 
new HTTPTransportFactory(), getWildcard());
     }
 
     private static class ContextLiteral extends 
EmptyAnnotationLiteral<Context> implements Context {

http://git-wip-us.apache.org/repos/asf/tomee/blob/ff7c4dba/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/CxfService.java
----------------------------------------------------------------------
diff --git 
a/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/CxfService.java
 
b/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/CxfService.java
index 454835e..de0edde 100644
--- 
a/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/CxfService.java
+++ 
b/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/CxfService.java
@@ -19,7 +19,6 @@ package org.apache.openejb.server.cxf;
 
 import org.apache.cxf.Bus;
 import org.apache.cxf.binding.soap.SoapTransportFactory;
-import org.apache.cxf.transport.DestinationFactory;
 import org.apache.openejb.BeanContext;
 import org.apache.openejb.assembler.classic.util.ServiceConfiguration;
 import org.apache.openejb.core.ivm.naming.JaxWsServiceReference;
@@ -49,6 +48,7 @@ public class CxfService extends WsService {
     private final Map<String, CxfWsContainer> wsContainers = new 
TreeMap<String, CxfWsContainer>();
 
     private SoapTransportFactory transportFactory;
+    private boolean factoryByListener;
 
     public String getName() {
         return "cxf";
@@ -60,6 +60,7 @@ public class CxfService extends WsService {
         CxfUtil.configureBus();
         SaajInterceptor.registerInterceptors();
 
+        factoryByListener = 
"true".equalsIgnoreCase(props.getProperty("openejb.cxf.factoryByListener", 
"false"));
         transportFactory = new SoapTransportFactory();
 
         if 
(SystemInstance.get().getComponent(JaxWsServiceReference.WebServiceClientCustomizer.class)
 == null) {
@@ -80,6 +81,10 @@ public class CxfService extends WsService {
         }
     }
 
+    private SoapTransportFactory newTransportFactory() {
+        return !factoryByListener ? transportFactory : new 
SoapTransportFactory();
+    }
+
     protected HttpListener createEjbWsContainer(URL moduleBaseUrl, PortData 
port, BeanContext beanContext, ServiceConfiguration config) {
         final Bus bus = CxfUtil.getBus();
 
@@ -88,7 +93,7 @@ public class CxfService extends WsService {
         try {
             CxfCatalogUtils.loadOASISCatalog(bus, moduleBaseUrl, 
"META-INF/jax-ws-catalog.xml");
 
-            final EjbWsContainer container = new EjbWsContainer(bus, 
transportFactory, port, beanContext, config);
+            final EjbWsContainer container = new EjbWsContainer(bus, 
newTransportFactory(), port, beanContext, config);
             container.start();
             wsContainers.put(beanContext.getDeploymentID().toString(), 
container);
             SystemInstance.get().fireEvent(new ServerCreated(
@@ -110,7 +115,7 @@ public class CxfService extends WsService {
         try {
             CxfCatalogUtils.loadOASISCatalog(bus, moduleBaseUrl, 
"META-INF/jax-ws-catalog.xml");
 
-            PojoWsContainer container = new PojoWsContainer(loader, 
transportFactory, bus, port, context, target, bdgs, services);
+            PojoWsContainer container = new PojoWsContainer(loader, 
newTransportFactory(), bus, port, context, target, bdgs, services);
             container.start();
             wsContainers.put(serviceId, container);
             SystemInstance.get().fireEvent(new ServerCreated(

Reply via email to