[ https://issues.apache.org/jira/browse/COCOON-2270?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12773545#action_12773545 ]
Christopher Schultz commented on COCOON-2270: --------------------------------------------- Does this mean that # symbols in my file paths are a no-go? It's frustrating that Tomcat (another Apache project) uses a convention that Cocoon cannot tolerate. :( > Cocoon fails to find files when deployed into a directory containing a '#' > character > ------------------------------------------------------------------------------------ > > Key: COCOON-2270 > URL: https://issues.apache.org/jira/browse/COCOON-2270 > Project: Cocoon > Issue Type: Bug > Components: - Components: Sitemap > Affects Versions: 2.1.11 > Reporter: Christopher Schultz > > I have been using Cocoon 2.1.10 and 2.1.11 for quite some time with a handful > of modest pipelines using XSLTs on the local disk. > Recently, I've been building a development server to be shared among several > developers on our team. In order to share HTTP ports and URL spaces, we've > chosen to use URL spaces like "/[username]/[appname]" rather than simply > "/[appname]" as we've used in the past. > We use Apache Tomcat 5.5 as our app server, and the proper way to deploy a > web application with a / in its context name is to use either a WAR file such > as [username]#[appname].war, or a directory with the same name (minus the > ".war", of course). > When we do this, we find that Cocoon gets tripped-up, apparently confused by > the # symbol in the path name. It can't find our templates on the disk > (maybe?) and it's also failing to find its own "exception2html.xslt" file. > Cocoon has been deployed into this directory: > /home/cschultz/projects/cocoon/app/webapps/cschultz#chadis > Our top-level sitemap has the default exception handler configuration: > <map:handle-errors> > <map:select type="exception"> > <map:when test="not-found"> > <map:generate type="exception"/> > <map:transform src="stylesheets/system/exception2html.xslt"> > <map:parameter name="contextPath" value="{request:contextPath}"/> > <map:parameter name="realPath" value="{realpath:}"/> > <map:parameter name="pageTitle" value="Resource not found"/> > </map:transform> > <map:serialize status-code="404"/> > </map:when> > <map:when test="invalid-continuation"> > <map:generate type="exception"/> > <map:transform src="stylesheets/system/exception2html.xslt"> > <map:parameter name="contextPath" value="{request:contextPath}"/> > <map:parameter name="realPath" value="{realpath:}"/> > <map:parameter name="pageTitle" value="Invalid Continuation"/> > </map:transform> > <map:serialize status-code="404"/> > </map:when> > <map:otherwise> > <map:generate type="exception"/> > <map:transform src="stylesheets/system/exception2html.xslt"> > <map:parameter name="contextPath" value="{request:contextPath}"/> > <map:parameter name="realPath" value="{realpath:}"/> > </map:transform> > <map:serialize status-code="500"/> > </map:otherwise> > </map:select> > </map:handle-errors> > When we try to execute our transformers, we get the following error: > Message: > /home/cschultz/.webapps/cocoon/8225/webapps/stylesheets/system/exception2html.xslt > (No such file or directory) > If you notice, this path is not correct. It should be: > /home/cschultz/.webapps/cocoon/8225/webapps/cschultz#chadis/stylesheets/system/exception2html.xslt > Note that the path element after "webapps" has been removed. > I have tried changing the path to the exception stylesheet in the top-level > sitemap to: > <map:transform > src="/home/cschultz/.webapps/cocoon/8225/webapps/cschultz#chadis/stylesheets/system/exception2html.xslt"> > But this results in the following error: > Message: /home/cschultz/.webapps/cocoon/8225/webapps/cschultz (No such file > or directory) > Note the path is truncated at the '#' symbol. > Finally, I tried changing the path to: > <map:transform > src="/home/cschultz/.webapps/cocoon/8225/webapps/cschultz%23chadis/stylesheets/system/exception2html.xslt"> > Message: Did not find the stylesheet root! > Description: org.apache.cocoon.ProcessingException: Unable to get transformer > handler for > file:///home/cschultz/.webapps/cocoon/8225/webapps/cschultz#chadis/stylesheets/system/exception2html.xslt > at <map:serialize> - > file:///home/cschultz/.webapps/cocoon/8225/webapps/cschultz#chadis/sitemap.xmap:736:45 > at <map:transform> - > file:///home/cschultz/.webapps/cocoon/8225/webapps/cschultz#chadis/sitemap.xmap:731:133 > at <map:generate type="exception"> - > file:///home/cschultz/.webapps/cocoon/8225/webapps/cschultz#chadis/sitemap.xmap:730:43 > full exception chain stacktrace > org.apache.cocoon.ProcessingException: Unable to get transformer handler for > file:///home/cschultz/.webapps/cocoon/8225/webapps/cschultz#chadis/stylesheets/system/exception2html.xslt > at <map:serialize> - > file:///home/cschultz/.webapps/cocoon/8225/webapps/cschultz#chadis/sitemap.xmap:736:45 > at <map:transform> - > file:///home/cschultz/.webapps/cocoon/8225/webapps/cschultz#chadis/sitemap.xmap:731:133 > at <map:generate type="exception"> - > file:///home/cschultz/.webapps/cocoon/8225/webapps/cschultz#chadis/sitemap.xmap:730:43 > at > org.apache.cocoon.transformation.TraxTransformer.setup(TraxTransformer.java:339) > at > org.apache.cocoon.components.pipeline.AbstractProcessingPipeline.setupPipeline(AbstractProcessingPipeline.java:398) > at > org.apache.cocoon.components.pipeline.impl.AbstractCachingProcessingPipeline.setupPipeline(AbstractCachingProcessingPipeline.java:718) > at > org.apache.cocoon.components.pipeline.AbstractProcessingPipeline.preparePipeline(AbstractProcessingPipeline.java:501) > at > org.apache.cocoon.components.pipeline.AbstractProcessingPipeline.process(AbstractProcessingPipeline.java:453) > at > org.apache.cocoon.components.treeprocessor.sitemap.SerializeNode.invoke(SerializeNode.java:144) > at > org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69) > at > org.apache.cocoon.components.treeprocessor.sitemap.SwitchSelectNode.invoke(SwitchSelectNode.java:99) > at > org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69) > at > org.apache.cocoon.components.treeprocessor.sitemap.HandleErrorsNode.invoke(HandleErrorsNode.java:90) > at > org.apache.cocoon.components.treeprocessor.sitemap.ErrorHandlerHelper.prepareErrorHandler(ErrorHandlerHelper.java:182) > at > org.apache.cocoon.components.treeprocessor.sitemap.ErrorHandlerHelper.prepareErrorHandler(ErrorHandlerHelper.java:135) > at > org.apache.cocoon.components.treeprocessor.sitemap.ErrorHandlerHelper.invokeErrorHandler(ErrorHandlerHelper.java:108) > at > org.apache.cocoon.components.treeprocessor.sitemap.PipelineNode.invoke(PipelineNode.java:157) > at > org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69) > at > org.apache.cocoon.components.treeprocessor.sitemap.PipelinesNode.invoke(PipelinesNode.java:93) > at > org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:235) > at > org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:177) > at > org.apache.cocoon.components.treeprocessor.TreeProcessor.process(TreeProcessor.java:254) > at org.apache.cocoon.Cocoon.process(Cocoon.java:699) > at > org.apache.cocoon.servlet.CocoonServlet.service(CocoonServlet.java:1154) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269) > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) > at > org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) > at > org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172) > at > org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) > at > org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117) > at > org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108) > at > org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174) > at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:200) > at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:283) > at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:773) > at > org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:703) > at > org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:895) > at > org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689) > at java.lang.Thread.run(Thread.java:595) > Caused by: org.apache.excalibur.xml.xslt.XSLTProcessorException: Exception > when creating Transformer from > file:///home/cschultz/.webapps/cocoon/8225/webapps/cschultz#chadis/stylesheets/system/exception2html.xslt > at > org.apache.cocoon.components.xslt.TraxProcessor.getTransformerHandlerAndValidity(TraxProcessor.java:300) > at > org.apache.cocoon.transformation.TraxTransformer.setup(TraxTransformer.java:331) > ... 36 more > Caused by: javax.xml.transform.TransformerException: Did not find the > stylesheet root! > at > org.apache.xalan.processor.StylesheetHandler.endDocument(StylesheetHandler.java:494) > at org.apache.xerces.parsers.AbstractSAXParser.endDocument(Unknown > Source) > at org.apache.xerces.impl.XMLDocumentScannerImpl.endEntity(Unknown > Source) > at org.apache.xerces.impl.XMLEntityManager.endEntity(Unknown Source) > at org.apache.xerces.impl.XMLEntityScanner.load(Unknown Source) > at org.apache.xerces.impl.XMLEntityScanner.skipSpaces(Unknown Source) > at > org.apache.xerces.impl.XMLDocumentScannerImpl$TrailingMiscDispatcher.dispatch(Unknown > Source) > at > org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown > Source) > at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) > at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) > at org.apache.xerces.parsers.XMLParser.parse(Unknown Source) > at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source) > at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown > Source) > at org.apache.excalibur.xml.impl.JaxpParser.parse(JaxpParser.java:315) > at > org.apache.excalibur.xmlizer.DefaultXMLizer.toSAX(DefaultXMLizer.java:128) > at > org.apache.cocoon.components.xslt.TraxProcessor.sourceToSAX(TraxProcessor.java:311) > at > org.apache.cocoon.components.xslt.TraxProcessor.getTransformerHandlerAndValidity(TraxProcessor.java:241) > ... 37 more > Caused by: javax.xml.transform.TransformerException: Did not find the > stylesheet root! > at > org.apache.xalan.processor.StylesheetHandler.endDocument(StylesheetHandler.java:474) > ... 53 more > This webapp works perfectly fine if deployed as, say, "chadis.war" (without > the # symbol). -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.