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();


Reply via email to