Hello, 

Im using cocoon 2.2 and have currently some problems, if there is a proxy in 
front of my application.

The application is deployed in a jetty and in my environement I'm usinga a 
apache httpd as proxy in front of the application with this configuraion:

<Location /APP_NAME/cocoon-forms-impl>
   ProxyPass        http://localhost:8888/APP_NAME/cocoon-forms-impl
   ProxyPassReverse http://localhost:8888/APP_NAME/cocoon-forms-impl
   ProxyPassReverseCookiePath / /
   Allow from all
</Location>

<Location /APP_NAME/cocoon-ajax-impl>
   ProxyPass        http://localhost:8888/APP_NAME/cocoon-ajax-impl
   ProxyPassReverse http://localhost:8888/APP_NAME/cocoon-ajax-impl
   ProxyPassReverseCookiePath / /
   Allow from all
</Location>

<Location /APP_NAME>
   ProxyPass        http://localhost:8888/APP_NAME
   ProxyPassReverse http://localhost:8888/APP_NAME
   ProxyPassReverseCookiePath / /
   Allow from all
</Location>

This works fine. In my sitemap I make the forms transformation like this:

<map:transform src="stylesheets/forms-style.xsl">
      <map:parameter name="dojo-resources" 
value="{servlet:ajax:/resource/external/dojo}" />
      <map:parameter name="forms-resources" 
value="{servlet:forms:/resource/external/forms}" />
</map:transform>

But know my Problem. In the productive installation I've another Proxy in front 
of the machine. The users are using an url like this:

https://www.HOST_NAME.com/LOGIN_PATH/APP_NAME/[...]

And now the dojo an forms resources aren't found any more. Because cocoon works 
internally with the webapp's name '/APP_NAME/cocoon-forms/...' and this url 
https://www.HOST_NAME.com/APP_NAME/cocoon-forms/.. is blocked by this 
WEB-Entry-Server.

My Solution for this problem was to set the dojo and forms resources relative:

<map:transform src="stylesheets/forms-style.xsl">
      <map:parameter name="dojo-resources" 
value="../cocoon-ajax-impl/resource/external/dojo" />
      <map:parameter name="forms-resources" 
value="../corix-forms-impl/resource/external/forms" />
</map:transform>

so the links to the javascripts in the generated html is now: 
https://www.HOST_NAME.com/LOGIN_PATH/APP_NAME/main/../cocoon-forms/[...]

this solution works nearly. The dojo.js for example is found by the browser. 
But when he makes a request to 

/APP_NAME/cocoon-ajax-impl/resource/external/dojo/__package__.js

I'm getting an error in the jetty. So the requests passes correctly through all 
the proxys, but cannot be processed by cocoon:

2008-04-16 11:33:49.313::WARN:  
/debol2/cocoon-ajax-impl/resource/external/dojo/__package__.js
org.apache.cocoon.ResourceNotFoundException: Error during resolving of the 
input stream
        at <map:read> - 
file:///tmp/Jetty_0_0_0_0_8423_debol2-webapplication-1.3.war__debol2__-5lbx6w_28157/blocks/cocoon-ajax-impl/sitemap.xmap:32:74
        at <map:match> - 
file:///tmp/Jetty_0_0_0_0_8423_debol2-webapplication-1.3.war__debol2__-5lbx6w_28157/blocks/cocoon-ajax-impl/sitemap.xmap:31:54
        at 
org.apache.cocoon.components.source.util.SourceUtil.handle(SourceUtil.java:347)
        at 
org.apache.cocoon.reading.ResourceReader.generate(ResourceReader.java:390)
        at 
org.apache.cocoon.components.pipeline.impl.AbstractCachingProcessingPipeline.processReader(AbstractCachingProcessingPipeline.java:892)
        at 
org.apache.cocoon.components.pipeline.AbstractProcessingPipeline.process(AbstractProcessingPipeline.java:429)
        at sun.reflect.GeneratedMethodAccessor34.invoke(Unknown Source)
        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.PoolableProxyHandler.invoke(PoolableProxyHandler.java:72)
        at $Proxy21.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:151)
        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:240)
        at 
org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:171)
        at 
org.apache.cocoon.components.treeprocessor.TreeProcessor.process(TreeProcessor.java:251)
        at 
org.apache.cocoon.servlet.RequestProcessor.process(RequestProcessor.java:357)
        at 
org.apache.cocoon.servlet.RequestProcessor.service(RequestProcessor.java:171)
        at 
org.apache.cocoon.sitemap.SitemapServlet.service(SitemapServlet.java:64)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
        at 
org.apache.cocoon.servletservice.ServletServiceContext$PathDispatcher.forward(ServletServiceContext.java:567)
        at 
org.apache.cocoon.servletservice.ServletServiceContext$PathDispatcher.forward(ServletServiceContext.java:544)
        at 
org.apache.cocoon.servletservice.spring.ServletFactoryBean$ServiceInterceptor.invoke(ServletFactoryBean.java:230)
        at 
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:166)
        at 
org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
        at $Proxy5.service(Unknown Source)
        at 
org.apache.cocoon.servletservice.DispatcherServlet.service(DispatcherServlet.java:102)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
        at 
org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:491)
        at 
org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:367)
        at 
org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:185)
        at 
org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
        at 
org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:689)
        at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:391)
        at 
org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:146)
        at 
org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
        at 
org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)
        at org.mortbay.jetty.Server.handle(Server.java:285)
        at 
org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:457)
        at 
org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:751)
        at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:500)
        at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:209)
        at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:357)
        at 
org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:329)
        at 
org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:475)
Caused by: org.apache.excalibur.source.SourceNotFoundException: 
resource://org/apache/cocoon/dojo/resources/__package__.js
        at 
org.apache.excalibur.source.impl.ResourceSource.getInputStream(ResourceSource.java:125)
        at 
org.apache.cocoon.reading.ResourceReader.generate(ResourceReader.java:388)
        ... 46 more

Does someone see a solution for this problem?

Regards, 

Mike

Reply via email to