[ http://jira.jboss.com/jira/browse/JBAS-1283?page=comments#action_12316807 ] Scott M Stark commented on JBAS-1283: -------------------------------------
This is not a valid override example. The stack trace shows that the exception is coming from the javax.xml.parsers.DocumentBuilderFactory class. This is a class that is bundled with the jdk and can only be effectively overriden using the endorsed library mechanism. If you remove the xml-apis.jar the override works fine. If you switch to use the tomcat class loader by setting the UseJBossWebLoader to false in jbossweb-tomcat55.sar/META-INF/jboss-service.xml this works fine even with the xml-apis.jar. The reason for this is that the tomcat class loader is stricter in what it will allow to be overriden as per the servlet spec: <quote servlet-2.4 spec> SRV.9.7.2 Web Application Class Loader The class loader that a container uses to load a servlet in a WAR must allow the developer to load any resources contained in library JARs within the WAR following normal J2SE semantics using getResource. As described in the J2EE license agreement, servlet containers that are not part of a J2EE product should not allow the application to override J2SE platform classes, such as those in the java.* and javax.* namespaces, that J2SE does not allow to be modified. Also, servlet containers that are part of a J2EE product should not allow the application to override J2SE or J2EE platform classes, such as those in java.* and javax.* namespaces, that either J2SE or J2EE do not allow to be modified. The container should not allow applications to override or access the container's implementation </quote servlet-2.4 spec> We will be adding an exclude list to the jboss class loaders that prevent the attempt to override an arbitrary set of namespaces so that you can throw useless classes into a war and have them not affect the class loading semantics. > Tomcat Unable to Compile JSPs when Separate ClassLoader Namespace Used for > Webapp > --------------------------------------------------------------------------------- > > Key: JBAS-1283 > URL: http://jira.jboss.com/jira/browse/JBAS-1283 > Project: JBoss Application Server > Type: Bug > Components: Web (Tomcat) service > Versions: JBossAS-3.2.6 Final > Environment: Stock JBoss 3.2.6 running on Linux (kernel 2.4.26), Sun JDK and > JRE version 1.4.2_04 > Reporter: Jeremy Brown > Assignee: Anil Saldhana > Priority: Minor > Attachments: test.war > > > See my initial forum post at > "http://www.jboss.org/index.html?module=bb&op=viewtopic&p=3861452#3861452". > The dom4j libs provided by JBoss do not work correctly with my web > application, so I attempted to configure my webapp's "jboss-web.xml"--as per > the wiki page at > "http://www.jboss.org/wiki/Wiki.jsp?page=ClassLoadingConfiguration"--so that > my webapp would essentially be in a different classloader namspace and would > be able to override the server dom4j implementation with its own. Now, > Tomcat bails out during JSP compilation with a dom4j-related > ClassCastException, leading me to believe there might some problem with the > sort of setup I'm trying to attempt...for example, Tomcat's JSP compiler > might be trying to link with the dom4j in my application's namespace while > its classes have been loaded next to (and probably are already using) dom4j > in the server namespace. > I'll attach a .war file exhibiting this behavior to this bug report. > Here's the specific exception for this .war file: > java.lang.ClassCastException > at > javax.xml.parsers.DocumentBuilderFactory.newInstance(DocumentBuilderFactory.java:93) > at > org.apache.jasper.xmlparser.ParserUtils.parseXMLDocument(ParserUtils.java:91) > at > org.apache.jasper.compiler.JspConfig.processWebDotXml(JspConfig.java:70) > at org.apache.jasper.compiler.JspConfig.init(JspConfig.java:188) > at > org.apache.jasper.compiler.JspConfig.findJspProperty(JspConfig.java:240) > at org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:160) > at org.apache.jasper.compiler.Compiler.compile(Compiler.java:470) > at org.apache.jasper.compiler.Compiler.compile(Compiler.java:451) > at org.apache.jasper.compiler.Compiler.compile(Compiler.java:439) > at > org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:511) > at > org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:295) > at > org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292) > at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:810) > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237) > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157) > at > org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:75) > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:186) > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157) > at > org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214) > at > org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) > at > org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) > at > org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198) > at > org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152) > at > org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) > at > org.jboss.web.tomcat.security.CustomPrincipalValve.invoke(CustomPrincipalValve.java:66) > at > org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102) > at > org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:158) > at > org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102) > at > org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) > at > org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137) > at > org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) > at > org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118) > at > org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102) > at > org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) > at > org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) > at > org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) > at > org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) > at > org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929) > at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160) > at > org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799) > at > org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705) > at > org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577) > at > org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683) > at java.lang.Thread.run(Thread.java:534) > Interestingly enough, I can copy my app-specific "dom4j-full.jar" over the > JBoss-provided "dom4j.jar" in "/lib", and everything works great. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa - If you want more information on JIRA, or have a bug to report see: http://www.atlassian.com/software/jira ------------------------------------------------------- SF email is sponsored by - The IT Product Guide Read honest & candid reviews on hundreds of IT Products from real users. Discover which products truly live up to the hype. Start reading now. http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click _______________________________________________ JBoss-Development mailing list JBoss-Development@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/jboss-development