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