[ http://jira.jboss.com/jira/browse/JBAS-1283?page=comments#action_12316788 ] Tomislav Bodor commented on JBAS-1283: --------------------------------------
I can't figure out how to attach a war file to my comment. However, this issue is actually very simple to reproduce: 1. Put xercesImpl.jar and xml-apis.jar in WEB-INF/lib. Any version should do, even the same one as in JBoss - the conflict comes from the class loaders, not different classes. 2. To enable scoping, and allow overriding, make a jboss-web.xml that looks like this: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE jboss-web PUBLIC "-//JBoss//DTD Web Application 2.3//EN" "http://www.jboss.org/j2ee/dtd/jboss-web_3_2.dtd"> <jboss-web> <class-loading java2ClassLoadingCompliance='false'> <loader-repository> scoped.war:loader=scoped.war <loader-repository-config> java2ParentDelegation=false </loader-repository-config> </loader-repository> </class-loading> </jboss-web> 3. Add an (almost) empty web.xml: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app> </web-app> 4. Add an index.jsp to the root of the war file. It can be completely empty, but I put a hello world in mine. That's it. Now deploy in an out of the box JBoss, any version from 3.2.6 above, including 4.0.2RC1. Go to the index.jsp and see it fail (stack trace is below). Ensure that the jsp hasn't already been compiled - once it succeeds, it is preserved by JBoss and will run fine. Only compilation fails. To make sure it is recompiled, go to JBoss/server/$profile/work and delete jboss.web directory from there. Stack trace: org.apache.jasper.JasperException: Unable to compile class for JSP org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:565) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:296) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241) javax.servlet.http.HttpServlet.service(HttpServlet.java:810) org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:75) root cause java.lang.ClassCastException javax.xml.parsers.DocumentBuilderFactory.newInstance(Unknown Source) org.apache.jasper.xmlparser.ParserUtils.parseXMLDocument(ParserUtils.java:91) org.apache.jasper.compiler.JspConfig.processWebDotXml(JspConfig.java:70) org.apache.jasper.compiler.JspConfig.init(JspConfig.java:188) org.apache.jasper.compiler.JspConfig.findJspProperty(JspConfig.java:240) org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:103) org.apache.jasper.compiler.Compiler.compile(Compiler.java:286) org.apache.jasper.compiler.Compiler.compile(Compiler.java:267) org.apache.jasper.compiler.Compiler.compile(Compiler.java:255) org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:556) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:296) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241) javax.servlet.http.HttpServlet.service(HttpServlet.java:810) org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:75) I've got a war file ready, so if you tell me how to attach it, I can. Regards, Tomislav > 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 [email protected] https://lists.sourceforge.net/lists/listinfo/jboss-development
