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 2011/07/11 16:28:12 UTC

svn commit: r1145190 [2/2] - in /openejb/trunk/openejb3: ./ container/openejb-core/src/main/java/org/apache/openejb/util/ container/openejb-core/src/main/resources/ server/ server/openejb-cxf-rs/ server/openejb-cxf-rs/src/ server/openejb-cxf-rs/src/mai...

Modified: openejb/trunk/openejb3/server/openejb-webservices/src/main/java/org/apache/openejb/server/webservices/OpenEJBHttpWsRegistry.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/server/openejb-webservices/src/main/java/org/apache/openejb/server/webservices/OpenEJBHttpWsRegistry.java?rev=1145190&r1=1145189&r2=1145190&view=diff
==============================================================================
--- openejb/trunk/openejb3/server/openejb-webservices/src/main/java/org/apache/openejb/server/webservices/OpenEJBHttpWsRegistry.java (original)
+++ openejb/trunk/openejb3/server/openejb-webservices/src/main/java/org/apache/openejb/server/webservices/OpenEJBHttpWsRegistry.java Mon Jul 11 14:28:10 2011
@@ -17,51 +17,13 @@
  */
 package org.apache.openejb.server.webservices;
 
-import java.net.InetAddress;
-import java.net.URI;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.openejb.assembler.classic.OpenEjbConfiguration;
-import org.apache.openejb.assembler.classic.ServiceInfo;
-import org.apache.openejb.loader.SystemInstance;
+import org.apache.openejb.server.httpd.BasicAuthHttpListenerWrapper;
 import org.apache.openejb.server.httpd.HttpListener;
-import org.apache.openejb.server.httpd.HttpListenerRegistry;
-import org.apache.openejb.server.httpd.HttpRequest;
-import org.apache.openejb.server.httpd.HttpResponse;
-import org.apache.openejb.server.httpd.HttpServerFactory;
-import org.apache.openejb.util.LogCategory;
-import org.apache.openejb.util.Logger;
-
-public class OpenEJBHttpWsRegistry implements WsRegistry {
-    public static final Logger log = Logger.getInstance(LogCategory.OPENEJB_WS, WsService.class);
-    private final HttpListenerRegistry registry;
-    private final List<URI> baseUris = new ArrayList<URI>();
-
-    public OpenEJBHttpWsRegistry() {
-        try {
-            OpenEjbConfiguration configuration = SystemInstance.get().getComponent(OpenEjbConfiguration.class);
-            for (ServiceInfo service : configuration.facilities.services) {
-                if (service.className.equals(HttpServerFactory.class.getName())) {
-                    int port = Integer.parseInt(service.properties.getProperty("port"));
-                    String ip = service.properties.getProperty("bind");
-                    if ("0.0.0.0".equals(ip)) {
-                        InetAddress[] addresses = InetAddress.getAllByName(ip);
-                        for (InetAddress address : addresses) {
-                            baseUris.add(new URI("http", null, address.getHostAddress(), port, null, null, null));
-                        }
-                    } else {
-                        baseUris.add(new URI("http", null, ip, port, null, null, null));
-                    }
-                    break;
-                }
-            }
-        } catch (Exception e) {
-            log.error("Web Services disabled: Unable to build base URIs for Web Service registry", e);
-        }
-        registry = SystemInstance.get().getComponent(HttpListenerRegistry.class);
-    }
+import org.apache.openejb.server.httpd.OpenEJBHttpRegistry;
 
+import java.util.List;
+
+public class OpenEJBHttpWsRegistry extends OpenEJBHttpRegistry implements WsRegistry {
     public List<String> setWsContainer(String virtualHost, String contextRoot, String servletName, HttpListener wsContainer) throws Exception {
         throw new UnsupportedOperationException("OpenEJB http server does not support POJO webservices");
     }
@@ -82,42 +44,13 @@ public class OpenEJBHttpWsRegistry imple
             httpListener = new BasicAuthHttpListenerWrapper(httpListener, realmName);
         }
 
-        // assure context root with a leading slash
-        if (!path.startsWith("/")) path = "/" + path;
-
-        httpListener = new ClassLoaderHttpListener(httpListener, classLoader);
-        registry.addHttpListener(httpListener, path);
+        addWrappedHttpListener(httpListener, classLoader, path);
 
         // register wsdl locations for service-ref resolution
-        List<String> addresses = new ArrayList<String>();
-        for (URI baseUri : baseUris) {
-            URI address = baseUri.resolve(path);
-            addresses.add(address.toString());
-        }
-        return addresses;
+        return getResolvedAddresses(path);
     }
 
     public void removeWsContainer(String path) {
         registry.removeHttpListener(path);
     }
-
-    private static class ClassLoaderHttpListener implements HttpListener {
-        private final HttpListener delegate;
-        private final ClassLoader classLoader;
-
-        private ClassLoaderHttpListener(HttpListener delegate, ClassLoader classLoader) {
-            this.delegate = delegate;
-            this.classLoader = classLoader;
-        }
-
-        public void onMessage(HttpRequest request, HttpResponse response) throws Exception {
-            ClassLoader oldCl = Thread.currentThread().getContextClassLoader();
-            Thread.currentThread().setContextClassLoader(classLoader);
-            try {
-                delegate.onMessage(request, response);
-            } finally {
-                Thread.currentThread().setContextClassLoader(oldCl);
-            }
-        }
-    }
 }

Modified: openejb/trunk/openejb3/server/openejb-webservices/src/main/java/org/apache/openejb/server/webservices/WsService.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/server/openejb-webservices/src/main/java/org/apache/openejb/server/webservices/WsService.java?rev=1145190&r1=1145189&r2=1145190&view=diff
==============================================================================
--- openejb/trunk/openejb3/server/openejb-webservices/src/main/java/org/apache/openejb/server/webservices/WsService.java (original)
+++ openejb/trunk/openejb3/server/openejb-webservices/src/main/java/org/apache/openejb/server/webservices/WsService.java Mon Jul 11 14:28:10 2011
@@ -40,6 +40,7 @@ import org.apache.openejb.core.webservic
 import org.apache.openejb.core.webservices.PortData;
 import org.apache.openejb.core.CoreContainerSystem;
 import org.apache.openejb.core.WebContext;
+import org.apache.openejb.server.httpd.util.HttpUtil;
 import org.apache.openejb.spi.ContainerSystem;
 import org.apache.openejb.Injection;
 import org.apache.openejb.util.Logger;
@@ -255,7 +256,7 @@ public abstract class WsService implemen
                                 List<String> addresses = wsRegistry.addWsContainer(location, container, virtualHost, realm, transport, auth, classLoader);
 
                                 // one of the registered addresses to be the connonical address
-                                String address = selectSingleAddress(addresses);
+                                String address = HttpUtil.selectSingleAddress(addresses);
 
                                 if (address != null) {
                                     // register wsdl location
@@ -314,7 +315,7 @@ public abstract class WsService implemen
                     List<String> addresses = wsRegistry.setWsContainer(virtualHost, webApp.contextRoot, servlet.servletName, container);
 
                     // one of the registered addresses to be the connonical address
-                    String address = selectSingleAddress(addresses);
+                    String address = HttpUtil.selectSingleAddress(addresses);
 
                     // add address to global registry
                     portAddressRegistry.addPort(portInfo.serviceId, portInfo.wsdlService, portInfo.portId, portInfo.wsdlPort, portInfo.seiInterfaceName, address);
@@ -388,26 +389,6 @@ public abstract class WsService implemen
         }
     }
 
-    private String selectSingleAddress(List<String> addresses) {
-        if (addresses == null || addresses.isEmpty()) return null;
-
-        // return the first http address
-        for (String address : addresses) {
-            if (address.startsWith("http:")) {
-                return address;
-            }
-        }
-        // return the first https address
-        for (String address : addresses) {
-            if (address.startsWith("https:")) {
-                return address;
-            }
-        }
-        // just return the first address
-        String address = addresses.iterator().next();
-        return address;
-    }
-
     private String autoAssignWsLocation(EnterpriseBeanInfo bean, PortData port, Map<String, String> contextData, StringTemplate template) {
         contextData.put("ejbDeploymentId", bean.ejbDeploymentId);
         contextData.put("ejbType", getEjbType(bean.type));

Modified: openejb/trunk/openejb3/server/pom.xml
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/server/pom.xml?rev=1145190&r1=1145189&r2=1145190&view=diff
==============================================================================
--- openejb/trunk/openejb3/server/pom.xml (original)
+++ openejb/trunk/openejb3/server/pom.xml Mon Jul 11 14:28:10 2011
@@ -44,6 +44,9 @@
     <module>openejb-cxf</module>
     <module>openejb-multicast</module>
     <module>openejb-daemon</module>
+    <module>openejb-cxf-rs</module>
+    <module>openejb-cxf-transport</module>
+    <module>openejb-rest</module>
   </modules>
 </project>