From dev-return-90946-apmail-cocoon-dev-archive=cocoon.apache.org@cocoon.apache.org Wed Nov 22 10:09:31 2006 Return-Path: Delivered-To: apmail-cocoon-dev-archive@www.apache.org Received: (qmail 23445 invoked from network); 22 Nov 2006 10:09:29 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 22 Nov 2006 10:09:29 -0000 Received: (qmail 24068 invoked by uid 500); 22 Nov 2006 10:09:37 -0000 Delivered-To: apmail-cocoon-dev-archive@cocoon.apache.org Received: (qmail 24009 invoked by uid 500); 22 Nov 2006 10:09:36 -0000 Mailing-List: contact dev-help@cocoon.apache.org; run by ezmlm Precedence: bulk list-help: list-unsubscribe: List-Post: Reply-To: dev@cocoon.apache.org List-Id: Delivered-To: mailing list dev@cocoon.apache.org Received: (qmail 23998 invoked by uid 99); 22 Nov 2006 10:09:36 -0000 Received: from herse.apache.org (HELO herse.apache.org) (140.211.11.133) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 22 Nov 2006 02:09:36 -0800 X-ASF-Spam-Status: No, hits=1.3 required=10.0 tests=RCVD_NUMERIC_HELO,SPF_HELO_PASS,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (herse.apache.org: domain of ap-cocoon-dev@m.gmane.org designates 80.91.229.2 as permitted sender) Received: from [80.91.229.2] (HELO ciao.gmane.org) (80.91.229.2) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 22 Nov 2006 02:09:22 -0800 Received: from list by ciao.gmane.org with local (Exim 4.43) id 1Gmp2E-0008UN-Pk for dev@cocoon.apache.org; Wed, 22 Nov 2006 11:08:54 +0100 Received: from 217.244.9.5 ([217.244.9.5]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Wed, 22 Nov 2006 11:08:54 +0100 Received: from alexander.klimetschek by 217.244.9.5 with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Wed, 22 Nov 2006 11:08:54 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: dev@cocoon.apache.org From: Alexander Klimetschek Subject: Problem with JAXP and shielding (was Re: Shielded class loading between blocks) Date: Wed, 22 Nov 2006 11:08:34 +0100 Lines: 164 Message-ID: References: <45618FC0.1070706@apache.org> <4561FBC9.1000408@nada.kth.se> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-15; format=flowed Content-Transfer-Encoding: 7bit X-Complaints-To: usenet@sea.gmane.org X-Gmane-NNTP-Posting-Host: 217.244.9.5 User-Agent: Thunderbird 1.5.0.8 (Macintosh/20061025) In-Reply-To: Sender: news X-Virus-Checked: Checked by ClamAV on apache.org Alexander Klimetschek schrieb: > IMHO this might happen any time again and having the flexibility of > classloading in Java is perfect for solving those problems. I have > implemented that shielded groups stuff in the old > BootstrapClassLoaderManager, right now, I am writing on a > ShieldingBlockServlet as a proof of concept and to be up-to-date with > the cocoon trunk. The new ShieldingBlockServlet works except for one annoying thing: when serving JSPs I get this exception: java.lang.ClassCastException: org.apache.xerces.jaxp.DocumentBuilderFactoryImpl (see full stacktrace below at the end of the mail). This actually worked before when I used the shielding classloading stuff from cocoon-bootstrap, i.e. exactly the same shielded classloading code as used for the shielding of cocoon, only with an additional lib/ directory inside the block. Now I have a ShieldingBlockServlet which is like the current o.a.c.maven.deployer.servlet.ShieldingServlet and it uses the o.a.c.classloader.DefaultClassLoader, which is setup only with lib and classes directory from the block (well, this might be different to the previous case, where also the standard WEB-INF/lib etc. were set, but IIRC they couldn't be found anyway, since they were looked up from the BlockContext). The classloader hierarchy also seems to be ok, my DefaultClassLoader has the o.a.c.maven.deployer.servlet.ShieldedClassLoader as parent and that one has the WebappClassLoader as its parent. With a look at Carsten ;-), what could be wrong? Alex The full stacktrace: java.lang.ClassCastException: org.apache.xerces.jaxp.DocumentBuilderFactoryImpl at javax.xml.parsers.DocumentBuilderFactory.newInstance(DocumentBuilderFactory.java:98) at org.apache.jasper.xmlparser.ParserUtils.parseXMLDocument(ParserUtils.java:188) at org.apache.jasper.compiler.JspConfig.processWebDotXml(JspConfig.java:110) at org.apache.jasper.compiler.JspConfig.init(JspConfig.java:282) at org.apache.jasper.compiler.JspConfig.findJspProperty(JspConfig.java:347) at org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:220) at org.apache.jasper.compiler.Compiler.compile(Compiler.java:620) at org.apache.jasper.compiler.Compiler.compile(Compiler.java:602) at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:618) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:329) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:440) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:335) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.cocoon.components.jsp.JSPEngineImpl.executeJSP(JSPEngineImpl.java:74) at org.apache.cocoon.reading.JSPReader.generate(JSPReader.java:115) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.apache.cocoon.core.container.spring.avalon.PoolableFactoryBean$ProxyHandler.invoke(PoolableFactoryBean.java:349) at $Proxy5.generate(Unknown Source) at org.apache.cocoon.components.pipeline.AbstractProcessingPipeline.processReader(AbstractProcessingPipeline.java:649) at org.apache.cocoon.components.pipeline.AbstractProcessingPipeline.process(AbstractProcessingPipeline.java:429) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.apache.cocoon.core.container.spring.avalon.PoolableFactoryBean$ProxyHandler.invoke(PoolableFactoryBean.java:349) at $Proxy4.process(Unknown Source) at org.apache.cocoon.components.treeprocessor.sitemap.ReadNode.invoke(ReadNode.java:94) at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:55) at org.apache.cocoon.components.treeprocessor.sitemap.MatchNode.invoke(MatchNode.java:87) at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:77) at org.apache.cocoon.components.treeprocessor.sitemap.PipelineNode.invoke(PipelineNode.java:152) at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:77) at org.apache.cocoon.components.treeprocessor.sitemap.PipelinesNode.invoke(PipelinesNode.java:93) at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:239) at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:170) at org.apache.cocoon.components.treeprocessor.TreeProcessor.process(TreeProcessor.java:232) at org.apache.cocoon.servlet.RequestProcessor.process(RequestProcessor.java:397) at org.apache.cocoon.servlet.RequestProcessor.service(RequestProcessor.java:162) at org.apache.cocoon.sitemap.SitemapServlet.service(SitemapServlet.java:61) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.cocoon.blocks.BlockContext$PathDispatcher.forward(BlockContext.java:529) at org.apache.cocoon.blocks.BlockContext$PathDispatcher.forward(BlockContext.java:511) at org.apache.cocoon.blocks.ShieldingBlockServlet.service(ShieldingBlockServlet.java:136) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.cocoon.blocks.DispatcherServlet.service(DispatcherServlet.java:127) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.cocoon.maven.deployer.servlet.ShieldingServlet.service(ShieldingServlet.java:95) at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:445) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1050) at com.mindquarry.webapp.servlet.AuthenticationFilter.doFilter(AuthenticationFilter.java:216) at org.apache.cocoon.maven.deployer.servlet.ShieldingServletFilter.doFilter(ShieldingServletFilter.java:50) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1041) at org.apache.cocoon.servlet.multipart.MultipartFilter.doFilter(MultipartFilter.java:104) at org.apache.cocoon.maven.deployer.servlet.ShieldingServletFilter.doFilter(ShieldingServletFilter.java:50) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1041) at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:354) at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:226) at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:627) at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:149) at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:123) at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:141) at org.mortbay.jetty.Server.handle(Server.java:269) at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:430) at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:687) at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:492) at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:199) at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:339) at org.mortbay.jetty.nio.HttpChannelEndPoint.run(HttpChannelEndPoint.java:270) at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:475) -- Alexander Klimetschek http://www.mindquarry.com