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 2012/02/16 13:55:53 UTC

svn commit: r1244965 - in /openejb/trunk/openejb: container/openejb-core/src/main/java/org/apache/openejb/config/ server/openejb-webservices/src/main/java/org/apache/openejb/server/webservices/ tomee/tomee-webservices/src/main/java/org/apache/tomee/web...

Author: rmannibucau
Date: Thu Feb 16 12:55:53 2012
New Revision: 1244965

URL: http://svn.apache.org/viewvc?rev=1244965&view=rev
Log:
OPENEJB-1775 managing web-service-address of openejb-jar.xml

Modified:
    openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/OpenEjb2Conversion.java
    openejb/trunk/openejb/server/openejb-webservices/src/main/java/org/apache/openejb/server/webservices/WsService.java
    openejb/trunk/openejb/tomee/tomee-webservices/src/main/java/org/apache/tomee/webservices/TomcatWsRegistry.java

Modified: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/OpenEjb2Conversion.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/OpenEjb2Conversion.java?rev=1244965&r1=1244964&r2=1244965&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/OpenEjb2Conversion.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/OpenEjb2Conversion.java Thu Feb 16 12:55:53 2012
@@ -16,15 +16,13 @@
  */
 package org.apache.openejb.config;
 
-import java.io.ByteArrayInputStream;
-import java.net.URL;
-import java.util.List;
-import java.util.Map;
-import java.util.TreeMap;
-import java.util.Set;
-import java.util.TreeSet;
-import javax.xml.bind.JAXBElement;
-
+import org.apache.openejb.jee.ActivationConfig;
+import org.apache.openejb.jee.ActivationConfigProperty;
+import org.apache.openejb.jee.EjbJar;
+import org.apache.openejb.jee.EjbRef;
+import org.apache.openejb.jee.EnterpriseBean;
+import org.apache.openejb.jee.MessageDrivenBean;
+import org.apache.openejb.jee.jpa.AttributeOverride;
 import org.apache.openejb.jee.jpa.Attributes;
 import org.apache.openejb.jee.jpa.Basic;
 import org.apache.openejb.jee.jpa.Column;
@@ -41,35 +39,37 @@ import org.apache.openejb.jee.jpa.OneToM
 import org.apache.openejb.jee.jpa.OneToOne;
 import org.apache.openejb.jee.jpa.RelationField;
 import org.apache.openejb.jee.jpa.Table;
-import org.apache.openejb.jee.jpa.AttributeOverride;
+import org.apache.openejb.jee.oejb2.ActivationConfigPropertyType;
+import org.apache.openejb.jee.oejb2.ActivationConfigType;
+import org.apache.openejb.jee.oejb2.EjbLocalRefType;
+import org.apache.openejb.jee.oejb2.EjbRefType;
 import org.apache.openejb.jee.oejb2.EjbRelationType;
 import org.apache.openejb.jee.oejb2.EjbRelationshipRoleType;
 import org.apache.openejb.jee.oejb2.EntityBeanType;
+import org.apache.openejb.jee.oejb2.GeronimoEjbJarType;
 import org.apache.openejb.jee.oejb2.JaxbOpenejbJar2;
-import org.apache.openejb.jee.oejb2.OpenejbJarType;
-import org.apache.openejb.jee.oejb2.QueryType;
+import org.apache.openejb.jee.oejb2.Jndi;
 import org.apache.openejb.jee.oejb2.MessageDrivenBeanType;
-import org.apache.openejb.jee.oejb2.ActivationConfigType;
-import org.apache.openejb.jee.oejb2.ActivationConfigPropertyType;
-import org.apache.openejb.jee.oejb2.EjbRefType;
+import org.apache.openejb.jee.oejb2.OpenejbJarType;
 import org.apache.openejb.jee.oejb2.PatternType;
-import org.apache.openejb.jee.oejb2.EjbLocalRefType;
-import org.apache.openejb.jee.oejb2.Jndi;
-import org.apache.openejb.jee.oejb2.SessionBeanType;
-import org.apache.openejb.jee.oejb2.WebServiceSecurityType;
-import org.apache.openejb.jee.oejb2.GeronimoEjbJarType;
+import org.apache.openejb.jee.oejb2.QueryType;
 import org.apache.openejb.jee.oejb2.RpcBean;
+import org.apache.openejb.jee.oejb2.SessionBeanType;
 import org.apache.openejb.jee.oejb2.TssLinkType;
 import org.apache.openejb.jee.oejb2.WebServiceBindingType;
-import org.apache.openejb.jee.oejb3.OpenejbJar;
+import org.apache.openejb.jee.oejb2.WebServiceSecurityType;
 import org.apache.openejb.jee.oejb3.EjbDeployment;
 import org.apache.openejb.jee.oejb3.EjbLink;
-import org.apache.openejb.jee.EjbJar;
-import org.apache.openejb.jee.MessageDrivenBean;
-import org.apache.openejb.jee.EnterpriseBean;
-import org.apache.openejb.jee.ActivationConfigProperty;
-import org.apache.openejb.jee.ActivationConfig;
-import org.apache.openejb.jee.EjbRef;
+import org.apache.openejb.jee.oejb3.OpenejbJar;
+
+import javax.xml.bind.JAXBElement;
+import java.io.ByteArrayInputStream;
+import java.net.URL;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.TreeMap;
+import java.util.TreeSet;
 
 public class OpenEjb2Conversion implements DynamicDeployer {
     public AppModule deploy(AppModule appModule) {
@@ -159,7 +159,10 @@ public class OpenEjb2Conversion implemen
 
                     deployment.getProperties().putAll(webServiceSecurityType.getProperties());
                 }
-                
+
+                if (sessionBean.getWebServiceAddress() != null) {
+                    deployment.getProperties().put("openejb.webservice.deployment.address", sessionBean.getWebServiceAddress());
+                }
             }
 
             deployment.getProperties().putAll(enterpriseBean.getProperties());

Modified: openejb/trunk/openejb/server/openejb-webservices/src/main/java/org/apache/openejb/server/webservices/WsService.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/server/openejb-webservices/src/main/java/org/apache/openejb/server/webservices/WsService.java?rev=1244965&r1=1244964&r2=1244965&view=diff
==============================================================================
--- openejb/trunk/openejb/server/openejb-webservices/src/main/java/org/apache/openejb/server/webservices/WsService.java (original)
+++ openejb/trunk/openejb/server/openejb-webservices/src/main/java/org/apache/openejb/server/webservices/WsService.java Thu Feb 16 12:55:53 2012
@@ -18,57 +18,57 @@
 package org.apache.openejb.server.webservices;
 
 import org.apache.openejb.BeanContext;
-import org.apache.openejb.jee.WebApp;
-import org.apache.openejb.server.ServerService;
-import org.apache.openejb.server.SelfManaging;
-import org.apache.openejb.server.ServiceException;
-import org.apache.openejb.server.httpd.HttpListener;
-import org.apache.openejb.server.httpd.HttpListenerRegistry;
-import org.apache.openejb.assembler.classic.DeploymentListener;
-import org.apache.openejb.assembler.classic.Assembler;
+import org.apache.openejb.Injection;
 import org.apache.openejb.assembler.classic.AppInfo;
+import org.apache.openejb.assembler.classic.Assembler;
+import org.apache.openejb.assembler.classic.DeploymentListener;
 import org.apache.openejb.assembler.classic.EjbJarInfo;
-import org.apache.openejb.assembler.classic.PortInfo;
 import org.apache.openejb.assembler.classic.EnterpriseBeanInfo;
-import org.apache.openejb.assembler.classic.StatelessBeanInfo;
-import org.apache.openejb.assembler.classic.WsBuilder;
-import org.apache.openejb.assembler.classic.WebAppInfo;
+import org.apache.openejb.assembler.classic.PortInfo;
 import org.apache.openejb.assembler.classic.ServletInfo;
 import org.apache.openejb.assembler.classic.SingletonBeanInfo;
-import org.apache.openejb.loader.SystemInstance;
-import org.apache.openejb.core.webservices.PortAddressRegistryImpl;
-import org.apache.openejb.core.webservices.PortAddressRegistry;
-import org.apache.openejb.core.webservices.PortData;
+import org.apache.openejb.assembler.classic.StatelessBeanInfo;
+import org.apache.openejb.assembler.classic.WebAppInfo;
+import org.apache.openejb.assembler.classic.WsBuilder;
 import org.apache.openejb.core.CoreContainerSystem;
 import org.apache.openejb.core.WebContext;
+import org.apache.openejb.core.webservices.PortAddressRegistry;
+import org.apache.openejb.core.webservices.PortAddressRegistryImpl;
+import org.apache.openejb.core.webservices.PortData;
+import org.apache.openejb.loader.SystemInstance;
+import org.apache.openejb.server.SelfManaging;
+import org.apache.openejb.server.ServerService;
+import org.apache.openejb.server.ServiceException;
+import org.apache.openejb.server.httpd.HttpListener;
+import org.apache.openejb.server.httpd.HttpListenerRegistry;
 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;
 import org.apache.openejb.util.LogCategory;
+import org.apache.openejb.util.Logger;
 import org.apache.openejb.util.StringTemplate;
 
 import javax.naming.Context;
-import java.util.Properties;
-import java.util.ArrayList;
-import java.util.Map;
-import java.util.HashMap;
-import java.util.TreeMap;
-import java.util.List;
-import java.util.Collection;
-import java.util.Set;
-import java.util.HashSet;
+import java.io.File;
+import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
-import java.io.IOException;
-import java.io.File;
+import java.net.MalformedURLException;
 import java.net.Socket;
 import java.net.URL;
-import java.net.MalformedURLException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+import java.util.Set;
+import java.util.TreeMap;
 
 public abstract class WsService implements ServerService, SelfManaging, DeploymentListener {
     public static final Logger logger = Logger.getInstance(LogCategory.OPENEJB_WS, WsService.class);
     public static final String WS_ADDRESS_FORMAT = "openejb.wsAddress.format";
+    public static final String WS_FORCE_ADDRESS = "openejb.webservice.deployment.address";
     private StringTemplate wsAddressTemplate;
 
     private PortAddressRegistry portAddressRegistry;
@@ -400,6 +400,9 @@ public abstract class WsService implemen
     }
 
     private String autoAssignWsLocation(EnterpriseBeanInfo bean, PortData port, Map<String, String> contextData, StringTemplate template) {
+        if (bean.properties.containsKey(WS_FORCE_ADDRESS)) {
+            return bean.properties.getProperty(WS_FORCE_ADDRESS);
+        }
         contextData.put("ejbDeploymentId", bean.ejbDeploymentId);
         contextData.put("ejbType", getEjbType(bean.type));
         contextData.put("ejbClass", bean.ejbClass);

Modified: openejb/trunk/openejb/tomee/tomee-webservices/src/main/java/org/apache/tomee/webservices/TomcatWsRegistry.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-webservices/src/main/java/org/apache/tomee/webservices/TomcatWsRegistry.java?rev=1244965&r1=1244964&r2=1244965&view=diff
==============================================================================
--- openejb/trunk/openejb/tomee/tomee-webservices/src/main/java/org/apache/tomee/webservices/TomcatWsRegistry.java (original)
+++ openejb/trunk/openejb/tomee/tomee-webservices/src/main/java/org/apache/tomee/webservices/TomcatWsRegistry.java Thu Feb 16 12:55:53 2012
@@ -168,7 +168,12 @@ public class TomcatWsRegistry implements
                 root = '/' + root;
             }
             Context webAppContext = (Context) host.findChild(root);
-            if (WEBSERVICE_SUB_CONTEXT.startsWith("/")) {
+            // sub context = '/' means the service address is provided by webservices
+            if (WEBSERVICE_SUB_CONTEXT.equals("/") && path.startsWith("/")) {
+                addServlet(host, webAppContext, path, httpListener, path, addresses);
+            } else if (WEBSERVICE_SUB_CONTEXT.equals("/") && !path.startsWith("/")) {
+                addServlet(host, webAppContext, '/' + path, httpListener, path, addresses);
+            } else if (WEBSERVICE_SUB_CONTEXT.startsWith("/")) {
                 addServlet(host, webAppContext, WEBSERVICE_SUB_CONTEXT + path, httpListener, path, addresses);
             } else {
                 addServlet(host, webAppContext, '/' + WEBSERVICE_SUB_CONTEXT + path, httpListener, path, addresses);
@@ -281,8 +286,12 @@ public class TomcatWsRegistry implements
                 } else if (contextPath == null) {
                     contextPath = "/";
                 }
+
                 fullContextpath = new StringBuilder(contextPath)
-                        .append(WEBSERVICE_SUB_CONTEXT).append(path);
+                if (!WEBSERVICE_SUB_CONTEXT.equals("/")) {
+                    fullContextpath.append(WEBSERVICE_SUB_CONTEXT);
+                }
+                fullContextpath.append(path);
             } else {
                 fullContextpath = new StringBuilder(path);
             }