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>
