You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by km...@apache.org on 2008/07/28 01:33:33 UTC

svn commit: r680207 - /openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-catalina/src/main/java/org/apache/openejb/tomcat/catalina/TomcatWebAppBuilder.java

Author: kmalhi
Date: Sun Jul 27 16:33:33 2008
New Revision: 680207

URL: http://svn.apache.org/viewvc?rev=680207&view=rev
Log:
OPENEJB-873 Deploying the same ejb in two different webapps causes a DuplicateDeploymentIdException
FIXED this issue

How it was fixed:-
The moduleId of an EJB module was earlier set to "classes". Changed it to now set the moduleId of
the EJB to have the same name as the context root of the webapp in which the EJB is installed

Modified:
    openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-catalina/src/main/java/org/apache/openejb/tomcat/catalina/TomcatWebAppBuilder.java

Modified: openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-catalina/src/main/java/org/apache/openejb/tomcat/catalina/TomcatWebAppBuilder.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-catalina/src/main/java/org/apache/openejb/tomcat/catalina/TomcatWebAppBuilder.java?rev=680207&r1=680206&r2=680207&view=diff
==============================================================================
--- openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-catalina/src/main/java/org/apache/openejb/tomcat/catalina/TomcatWebAppBuilder.java (original)
+++ openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-catalina/src/main/java/org/apache/openejb/tomcat/catalina/TomcatWebAppBuilder.java Sun Jul 27 16:33:33 2008
@@ -552,8 +552,9 @@
 
                     logger.info("Found ejb module " + moduleType.getSimpleName() + " in war " + standardContext.getPath());
 
-                    // creat the module
-                    EjbModule ejbModule = new EjbModule(webModule.getClassLoader(), file.getAbsolutePath(), null, null);
+                    
+                    // create the ejb module and set its moduleId to the webapp context root name
+                    EjbModule ejbModule = new EjbModule(webModule.getClassLoader(), getEjbModuleId(standardContext),file.getAbsolutePath(), null, null);
 
                     // EJB deployment descriptors
                     try {
@@ -585,7 +586,17 @@
 
         return appModule;
     }
-
+    /**
+     * Strips off the / from the context root and returns the remaining String
+     * @param standardContext
+     * @return the name of the context root for the webapp
+     */
+    private String getEjbModuleId(StandardContext standardContext) {
+		String ejbModuleId = standardContext.getName();
+		if(ejbModuleId.startsWith("/"))
+			ejbModuleId = ejbModuleId.substring(1);
+		return ejbModuleId;
+	}
     private WebModule createWebModule(StandardContext standardContext) {
         // todo replace this code with DeploymentLoader
         ServletContext servletContext = standardContext.getServletContext();