Tomcat cocoon协议不能在外部环境中使用

Tomcat cocoon协议不能在外部环境中使用,tomcat,protocols,pipeline,apache-cocoon,Tomcat,Protocols,Pipeline,Apache Cocoon,我面临的一个问题是cocoon管道和cocoon PipelineCronJob调度器的集成 我的cocoon.xconf快照代码如下 <trigger name="pipeline-writetest" target="org.apache.cocoon.components.cron.CronJob/writetimecron" concurrent-runs="false"> <cron>

我面临的一个问题是cocoon管道和cocoon PipelineCronJob调度器的集成

我的cocoon.xconf快照代码如下

<trigger name="pipeline-writetest"
             target="org.apache.cocoon.components.cron.CronJob/writetimecron"
             concurrent-runs="false">
             <cron>10 * * ? * *</cron>
</trigger> 
</triggers>
<component  role="org.apache.cocoon.components.cron.CronJob/writetimecron"
            class="org.apache.cocoon.components.cron.CocoonPipelineCronJob"
            logger="cron.writetimecron">
        <sleep>10</sleep>
    <pipeline>writetime</pipeline>
</component>
and my pipeline configure in sitemap.xmap as below
<map:pipeline internal-only="false">
        <map:match pattern="writetime">
            .....<!-- all generator,transformer and serialier code ..-->
        </map:match>
</map:pipeline>

10 * * ? * *
10
写作时间
我的管道在sitemap.xmap中配置如下
.....
信息Tomcat: apache-tomcat-6.0.30 Cocoon:2.1和 如果我 从外部访问它

但是,如果我从cronjob调用此管道,那么我将在cocoon.log中得到以下错误

INFO  (2011-02-06) 12:54.10:018 [cron] (Unknown-URI) Unknown-Thread/QuartzJobExecutor: Executing cron job named 'pipeline-writetest'
ERROR (2011-02-06) 12:54.10:019 [cron] (Unknown-URI) Unknown-Thread/QuartzJobExecutor: Cron job name 'pipeline-writetest' died.
java.net.MalformedURLException: The cocoon protocol can not be used outside an environment.
    at org.apache.cocoon.components.source.impl.SitemapSource.<init>(SitemapSource.java:119)
    at org.apache.cocoon.components.source.impl.SitemapSourceFactory.getSource(SitemapSourceFactory.java:65)
    at org.apache.excalibur.source.impl.SourceResolverImpl.resolveURI(SourceResolverImpl.java:208)
    at org.apache.cocoon.components.CocoonComponentManager.resolveURI(CocoonComponentManager.java:558)
    at org.apache.cocoon.components.CocoonComponentManager.resolveURI(CocoonComponentManager.java:541)
    at org.apache.cocoon.components.cron.CocoonPipelineCronJob.execute(CocoonPipelineCronJob.java:68)
    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:597)
    at org.apache.avalon.excalibur.component.ComponentProxyGenerator$ComponentInvocationHandler.invoke(ComponentProxyGenerator.java:143)
    at $Proxy6.execute(Unknown Source)
    at org.apache.cocoon.components.cron.QuartzJobExecutor.execute(QuartzJobExecutor.java:103)
    at org.quartz.core.JobRunShell.run(JobRunShell.java:203)
    at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Thread.java:662)
INFO(2011-02-06)12:54.10:018[cron](未知URI)未知线程/QuartzJobExecutor:正在执行名为“pipeline writetest”的cron作业
错误(2011-02-06)12:54.10:019[cron](未知URI)未知线程/QuartzJobExecutor:cron作业名称“pipeline writetest”已死亡。
java.net.MalformedURLException:cocoon协议不能在环境外使用。
位于org.apache.cocoon.components.source.impl.SitemapSource。(SitemapSource.java:119)
位于org.apache.cocoon.components.source.impl.SitemapSourceFactory.getSource(SitemapSourceFactory.java:65)
位于org.apache.excalibur.source.impl.SourceResolverImpl.resolveURI(SourceResolverImpl.java:208)
位于org.apache.cocoon.components.cococooncomponentmanager.resolveURI(CocoonComponentManager.java:558)
位于org.apache.cocoon.components.cococooncomponentmanager.resolveURI(CocoonComponentManager.java:541)
位于org.apache.cocoon.components.cron.cococoonpipelinecronjob.execute(cococoonpipelinecronjob.java:68)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
位于sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)中
位于java.lang.reflect.Method.invoke(Method.java:597)
位于org.apache.avalon.excalibur.component.ComponentProxyGenerator$ComponentInvocationHandler.invoke(ComponentProxyGenerator.java:143)
在$Proxy6.execute处执行(未知源)
位于org.apache.cocoon.components.cron.quartzjobecutor.execute(quartzjobecutor.java:103)
位于org.quartz.core.JobRunShell.run(JobRunShell.java:203)
位于EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(未知源)
运行(Thread.java:662)

如果您以前遇到过同样的问题,或者您知道这个问题的解决方案,请务必告诉我。

实际上,在我的应用程序中..我正在通过cronjob调用管道,并且我的cronjob正在运行,每10秒触发一次..下面的组件声明中是否包含该部分?ZJobScheduler很重要,因为该类是设置据报告在堆栈跟踪中丢失的环境的类。这是我的问题,我从Sylvain那里得到了答案,并通过使用JobScheduler解决了这个问题。很高兴你解决了这个问题。尽管其他人,比如我,可能有兴趣知道答案是什么;-)