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.