isolate war deployment
metadjer Aug 27, 2004 5:15 AMI would like to isolate my war deployment respecting to the classic servlet 2.3 class loading model (load the classes from the child scope first: WEB-INF/class + WEB-INF/lib first, then load the classes from the parent scope).
Here is my jboss-web.xml:
<jboss-web>
<!-- Isolate the application classes from other deployments
-->
<class-loading>
<loader-repository java2ClassLoadingCompliance="false">
app.TracerTrac:loader=TracerTrac.war
<loader-repository-config>java2ParentDelegaton=true</loader-repository-config>
</loader-repository>
</class-loading>
</jboss-web>
Nevertheless, somhow the war classloader is loading the classes from the parent scope first.
Here is the error:
10:10:42,829 ERROR [ActionServlet] Parsing error processing resource path /WEB-INF/struts-config.xml
java.lang.NoClassDefFoundError: org/apache/commons/digester/ObjectCreationFactory
at org.apache.commons.digester.Digester.addFactoryCreate(Digester.java:2044)
at org.apache.commons.digester.Digester.addFactoryCreate(Digester.java:1936)
at org.apache.struts.config.ConfigRuleSet.addRuleInstances(ConfigRuleSet.java:121)
at org.apache.commons.digester.Digester.addRuleSet(Digester.java:1663)
at org.apache.struts.action.ActionServlet.initConfigDigester(ActionServlet.java:1211)
at org.apache.struts.action.ActionServlet.initModuleConfig(ActionServlet.java:923)
at org.apache.struts.action.ActionServlet.init(ActionServlet.java:465)
at javax.servlet.GenericServlet.init(GenericServlet.java:211)
...
The conflict is about the jar: commons-digester.jar located under: MyWebApp/WEB-INF/lib and jbossweb-tomcat50.sar
Here are the JMX console traces:
class: org.apache.commons.digester.ObjectCreationFactory
class info from JMX:
org.apache.commons.digester.ObjectCreationFactory Information
Repository cache version:
org.apache.commons.digester.ObjectCreationFactory(e0c07c).ClassLoader=org.jboss.mx.loading.UnifiedClassLoader3@1181df3{ url=file:/C:/jboss-3.2.4/server/default/tmp/deploy/tmp39976TracerTrac.war/ ,addedOrder=33}
..org.jboss.mx.loading.UnifiedClassLoader3@1181df3{ url=file:/C:/jboss-3.2.4/server/default/tmp/deploy/tmp39976TracerTrac.war/ ,addedOrder=33}
....file:/C:/jboss-3.2.4/server/default/tmp/deploy/tmp39976TracerTrac.war/
....file:/C:/jboss-3.2.4/server/default/tmp/deploy/tmp39976TracerTrac.war/WEB-INF/classes/
.............
....file:/C:/jboss-3.2.4/server/default/tmp/deploy/tmp39976TracerTrac.war/WEB-INF/lib/commons-digester.jar
.............
++++CodeSource: (file:/C:/jboss-3.2.4/server/default/tmp/deploy/tmp39976TracerTrac.war/WEB-INF/lib/commons-digester.jar <no certificates>)
Implemented Interfaces:
### Instance0 found in UCL: org.jboss.mx.loading.UnifiedClassLoader3@1181df3{ url=file:/C:/jboss-3.2.4/server/default/tmp/deploy/tmp39976TracerTrac.war/ ,addedOrder=33}
class: org.apache.commons.digester.Digester
class info from JMX:
org.apache.commons.digester.Digester Information
Repository cache version:
org.apache.commons.digester.Digester(19e3e24).ClassLoader=org.jboss.mx.loading.UnifiedClassLoader3@134263a{ url=file:/C:/jboss-3.2.4/server/default/deploy/jbossweb-tomcat50.sar/ ,addedOrder=5}
..org.jboss.mx.loading.UnifiedClassLoader3@134263a{ url=file:/C:/jboss-3.2.4/server/default/deploy/jbossweb-tomcat50.sar/ ,addedOrder=5}
....file:/C:/jboss-3.2.4/server/default/deploy/jbossweb-tomcat50.sar/
....file:/C:/jboss-3.2.4/server/default/tmp/deploy/tmp39926ant.jar
....file:/C:/jboss-3.2.4/server/default/tmp/deploy/tmp39927catalina-manager.jar
....file:/C:/jboss-3.2.4/server/default/tmp/deploy/tmp39928catalina-optional.jar
....file:/C:/jboss-3.2.4/server/default/tmp/deploy/tmp39929catalina.jar
....file:/C:/jboss-3.2.4/server/default/tmp/deploy/tmp39930commons-beanutils.jar
....file:/C:/jboss-3.2.4/server/default/tmp/deploy/tmp39931commons-collections.jar
....file:/C:/jboss-3.2.4/server/default/tmp/deploy/tmp39932commons-digester.jar
...............
++++CodeSource: (file:/C:/jboss-3.2.4/server/default/tmp/deploy/tmp39932commons-digester.jar <no certificates>)
Implemented Interfaces:
### Instance0 found in UCL: org.jboss.mx.loading.UnifiedClassLoader3@1181df3{ url=file:/C:/jboss-3.2.4/server/default/tmp/deploy/tmp39976TracerTrac.war/ ,addedOrder=33}
So please, Help !
Regards
Kamel