You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@cocoon.apache.org by Bart Molenkamp <b....@bizzdesign.nl> on 2007/01/30 12:49:30 UTC
[2.2] can't mount sitemap using resource:// (spring configurator doesn't use SourceResolver?)
Hi,
I'm trying to mount a sitemap which is loaded from a resource. The
spring configurator seems to have problems with this, because I'm
getting a FileNotFoundException. Some parent of
ChildXmlWebApplicationContext tries to load the file
'/resource://test.xmap' (and I try to load the sitemap
'resource://test.xmap' of course).
The code goes trough
ChildXmlWebApplicationContext.getResourceByPath(String path), but fails
on line 101 (creating a new URL object that starts with the
"resource://" scheme). Then it captures the error, and delegates the
loading to a super class, which tries to load '/resource://test.xmap'.
Should the ChildXmlWebApplicationContext use the SourceResolver,
instead??
Thanks,
Bart.
Re: [2.2] can't mount sitemap using resource:// (spring configurator
doesn't use SourceResolver?)
Posted by Bart Molenkamp <b....@bizzdesign.nl>.
I filed the bug report:
https://issues.apache.org/jira/browse/COCOON-1995
I can see if I can fix it and provide a patch - can you tell me where I
should start looking? I guess ChildXmlWebApplicationContext isn't the
only location where the SourceResolver is required?
Bart.
Carsten Ziegeler wrote:
> Bart Molenkamp wrote:
>> Carsten Ziegeler wrote:
>>> Bart Molenkamp wrote:
>>>> As said, the sitemap is loaded with <map:mount src="resource://test.xmap" .../>.
>>>> And the file is available on the classpath. How about using other sources, like
>>>> the slide:// or xmldb:// to load sitemaps? Are they supported now?
>>>>
>>> Hi,
>>>
>>> no, currently only spring supported protocols work (file, http).
>>> Actually this is a bug in the new avalon sitemap support/avalon bridge;
>>> this is not a problem of the spring configurator.
>>>
>> Why does this configurator run anyways when loading a sitemap? Sitemaps
>> shouldn't contain component configurations anymore, right? In my case,
>> there are no configurations in the sitemap, I moved them to a separate
>> file in the META-INF/cocoon/avalon directory.
> Component configurations are still allowed in the sitemap for
> compatibility reasons. In addition we added the possibility to have per
> sitemap component configurations which are read automatically from a sub
> directory next to the sitemap.
> Therefore we create a sub application context which tests all these
> possibilities and eventually adds the component definitions.
>
> Carsten
>
Re: [2.2] can't mount sitemap using resource:// (spring configurator
doesn't use SourceResolver?)
Posted by Carsten Ziegeler <cz...@apache.org>.
Bart Molenkamp wrote:
> Carsten Ziegeler wrote:
>> Bart Molenkamp wrote:
>>> As said, the sitemap is loaded with <map:mount src="resource://test.xmap" .../>.
>>> And the file is available on the classpath. How about using other sources, like
>>> the slide:// or xmldb:// to load sitemaps? Are they supported now?
>>>
>> Hi,
>>
>> no, currently only spring supported protocols work (file, http).
>> Actually this is a bug in the new avalon sitemap support/avalon bridge;
>> this is not a problem of the spring configurator.
>>
>
> Why does this configurator run anyways when loading a sitemap? Sitemaps
> shouldn't contain component configurations anymore, right? In my case,
> there are no configurations in the sitemap, I moved them to a separate
> file in the META-INF/cocoon/avalon directory.
Component configurations are still allowed in the sitemap for
compatibility reasons. In addition we added the possibility to have per
sitemap component configurations which are read automatically from a sub
directory next to the sitemap.
Therefore we create a sub application context which tests all these
possibilities and eventually adds the component definitions.
Carsten
--
Carsten Ziegeler
http://www.osoco.org/weblogs/rael/
Re: [2.2] can't mount sitemap using resource:// (spring configurator
doesn't use SourceResolver?)
Posted by Bart Molenkamp <b....@bizzdesign.nl>.
Carsten Ziegeler wrote:
> Bart Molenkamp wrote:
>> As said, the sitemap is loaded with <map:mount src="resource://test.xmap" .../>.
>> And the file is available on the classpath. How about using other sources, like
>> the slide:// or xmldb:// to load sitemaps? Are they supported now?
>>
> Hi,
>
> no, currently only spring supported protocols work (file, http).
> Actually this is a bug in the new avalon sitemap support/avalon bridge;
> this is not a problem of the spring configurator.
>
Why does this configurator run anyways when loading a sitemap? Sitemaps
shouldn't contain component configurations anymore, right? In my case,
there are no configurations in the sitemap, I moved them to a separate
file in the META-INF/cocoon/avalon directory.
If configuration is disabled for sitemaps, we don't need the source
resolver for that.
> I agree that we should/use support the source resolver in these cases.
> Could you please file a bug report?
>
Sure.
Bart.
Re: [2.2] can't mount sitemap using resource:// (spring configurator
doesn't use SourceResolver?)
Posted by Carsten Ziegeler <cz...@apache.org>.
Bart Molenkamp wrote:
> As said, the sitemap is loaded with <map:mount src="resource://test.xmap" .../>.
> And the file is available on the classpath. How about using other sources, like
> the slide:// or xmldb:// to load sitemaps? Are they supported now?
>
Hi,
no, currently only spring supported protocols work (file, http).
Actually this is a bug in the new avalon sitemap support/avalon bridge;
this is not a problem of the spring configurator.
I agree that we should/use support the source resolver in these cases.
Could you please file a bug report?
Carsten
--
Carsten Ziegeler
http://www.osoco.org/weblogs/rael/
Re: [2.2] can't mount sitemap using resource:// (spring configurator
doesn't use SourceResolver?)
Posted by Bart Molenkamp <b....@bizzdesign.nl>.
As said, the sitemap is loaded with <map:mount src="resource://test.xmap" .../>.
And the file is available on the classpath. How about using other sources, like
the slide:// or xmldb:// to load sitemaps? Are they supported now?
java.io.FileNotFoundException: Could not open ServletContext resource [/resource://test.xmap]
at org.springframework.web.context.support.ServletContextResource.getInputStream(ServletContextResource.java:99)
at org.apache.cocoon.core.container.spring.avalon.ConfigurationReader.getInputSource(ConfigurationReader.java:170)
at org.apache.cocoon.core.container.spring.avalon.ConfigurationReader.convertSitemap(ConfigurationReader.java:226)
at org.apache.cocoon.core.container.spring.avalon.ConfigurationReader.readSitemap(ConfigurationReader.java:100)
at org.apache.cocoon.core.container.spring.avalon.SitemapElementParser.readConfiguration(SitemapElementParser.java:66)
at org.apache.cocoon.core.container.spring.avalon.BridgeElementParser.parse(BridgeElementParser.java:74)
at org.springframework.beans.factory.xml.NamespaceHandlerSupport.parse(NamespaceHandlerSupport.java:68)
at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1078)
at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1068)
at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:133)
at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.registerBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:90)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.registerBeanDefinitions(XmlBeanDefinitionReader.java:495)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:390)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:340)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:317)
at org.apache.cocoon.spring.configurator.impl.ChildXmlWebApplicationContext.loadBeanDefinitions(ChildXmlWebApplicationContext.java:82)
at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:91)
at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:94)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:292)
at org.springframework.web.context.support.AbstractRefreshableWebApplicationContext.refresh(AbstractRefreshableWebApplicationContext.java:156)
at org.apache.cocoon.core.container.spring.avalon.SitemapHelper.createContainer(SitemapHelper.java:323)
at org.apache.cocoon.components.treeprocessor.sitemap.SitemapLanguage.build(SitemapLanguage.java:344)
at sun.reflect.GeneratedMethodAccessor27.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:61)
at $Proxy1.build(Unknown Source)
at org.apache.cocoon.components.treeprocessor.TreeProcessor.buildConcreteProcessor(TreeProcessor.java:390)
at org.apache.cocoon.components.treeprocessor.TreeProcessor.setupConcreteProcessor(TreeProcessor.java:324)
at org.apache.cocoon.components.treeprocessor.TreeProcessor.buildPipeline(TreeProcessor.java:245)
at org.apache.cocoon.components.treeprocessor.sitemap.MountNode.invoke(MountNode.java:107)
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.buildPipeline(ConcreteTreeProcessor.java:187)
at org.apache.cocoon.components.treeprocessor.TreeProcessor.buildPipeline(TreeProcessor.java:246)
at org.apache.cocoon.components.treeprocessor.sitemap.MountNode.invoke(MountNode.java:107)
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: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.buildPipeline(ConcreteTreeProcessor.java:187)
at org.apache.cocoon.components.treeprocessor.TreeProcessor.buildPipeline(TreeProcessor.java:246)
at org.apache.cocoon.components.treeprocessor.sitemap.MountNode.invoke(MountNode.java:107)
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.buildPipeline(ConcreteTreeProcessor.java:187)
at org.apache.cocoon.components.source.impl.SitemapSource.init(SitemapSource.java:266)
at org.apache.cocoon.components.source.impl.SitemapSource.<init>(SitemapSource.java:147)
at org.apache.cocoon.components.source.impl.SitemapSourceFactory.getSource(SitemapSourceFactory.java:65)
at org.apache.cocoon.components.source.CocoonSourceResolver.resolveURI(CocoonSourceResolver.java:152)
at org.apache.cocoon.components.source.CocoonSourceResolver.resolveURI(CocoonSourceResolver.java:182)
at org.apache.cocoon.sitemap.DefaultContentAggregator.setup(DefaultContentAggregator.java:289)
at sun.reflect.GeneratedMethodAccessor60.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:61)
at $Proxy3.setup(Unknown Source)
at org.apache.cocoon.components.pipeline.AbstractProcessingPipeline.setupPipeline(AbstractProcessingPipeline.java:341)
at org.apache.cocoon.components.pipeline.impl.AbstractCachingProcessingPipeline.setupPipeline(AbstractCachingProcessingPipeline.java:714)
at org.apache.cocoon.components.pipeline.AbstractProcessingPipeline.preparePipeline(AbstractProcessingPipeline.java:464)
at org.apache.cocoon.components.pipeline.AbstractProcessingPipeline.process(AbstractProcessingPipeline.java:409)
at sun.reflect.GeneratedMethodAccessor55.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:61)
at $Proxy2.process(Unknown Source)
at org.apache.cocoon.components.treeprocessor.sitemap.SerializeNode.invoke(SerializeNode.java:134)
at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:77)
at org.apache.cocoon.components.treeprocessor.sitemap.SwitchSelectNode.invoke(SwitchSelectNode.java:88)
at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:77)
at org.apache.cocoon.components.treeprocessor.ContainerNode.invoke(ContainerNode.java:37)
at org.apache.cocoon.components.treeprocessor.CategoryNode.invokeByName(CategoryNode.java:65)
at org.apache.cocoon.components.treeprocessor.sitemap.CallNode.invoke(CallNode.java:83)
at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:77)
at org.apache.cocoon.components.treeprocessor.ContainerNode.invoke(ContainerNode.java:37)
at org.apache.cocoon.components.treeprocessor.CategoryNode.invokeByName(CategoryNode.java:65)
at org.apache.cocoon.components.treeprocessor.sitemap.CallNode.invoke(CallNode.java:83)
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:233)
at org.apache.cocoon.components.treeprocessor.sitemap.MountNode.invoke(MountNode.java:115)
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:233)
at org.apache.cocoon.servlet.RequestProcessor.process(RequestProcessor.java:349)
at org.apache.cocoon.servlet.RequestProcessor.service(RequestProcessor.java:163)
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.BlockServlet.service(BlockServlet.java:122)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.cocoon.blocks.DispatcherServlet.service(DispatcherServlet.java:126)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
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.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:595)
Carsten Ziegeler wrote:
> Bart Molenkamp wrote:
>
>> Hi,
>>
>> I'm trying to mount a sitemap which is loaded from a resource. The
>> spring configurator seems to have problems with this, because I'm
>> getting a FileNotFoundException. Some parent of
>> ChildXmlWebApplicationContext tries to load the file
>> '/resource://test.xmap' (and I try to load the sitemap
>> 'resource://test.xmap' of course).
>>
>> The code goes trough
>> ChildXmlWebApplicationContext.getResourceByPath(String path), but fails
>> on line 101 (creating a new URL object that starts with the
>> "resource://" scheme). Then it captures the error, and delegates the
>> loading to a super class, which tries to load '/resource://test.xmap'.
>>
>> Should the ChildXmlWebApplicationContext use the SourceResolver,
>> instead??
>>
>>
> The configurator should be independent and therefore just use plain
> spring. Can you add a stack trace please?
>
> Carsten
>
>
Re: [2.2] can't mount sitemap using resource:// (spring configurator
doesn't use SourceResolver?)
Posted by Carsten Ziegeler <cz...@apache.org>.
Bart Molenkamp wrote:
> Hi,
>
> I'm trying to mount a sitemap which is loaded from a resource. The
> spring configurator seems to have problems with this, because I'm
> getting a FileNotFoundException. Some parent of
> ChildXmlWebApplicationContext tries to load the file
> '/resource://test.xmap' (and I try to load the sitemap
> 'resource://test.xmap' of course).
>
> The code goes trough
> ChildXmlWebApplicationContext.getResourceByPath(String path), but fails
> on line 101 (creating a new URL object that starts with the
> "resource://" scheme). Then it captures the error, and delegates the
> loading to a super class, which tries to load '/resource://test.xmap'.
>
> Should the ChildXmlWebApplicationContext use the SourceResolver,
> instead??
>
The configurator should be independent and therefore just use plain
spring. Can you add a stack trace please?
Carsten
--
Carsten Ziegeler
http://www.osoco.org/weblogs/rael/