[ 
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

Reply via email to