在运行camel程序时,Bundle不再有效

时间:2014-07-09 05:55:34

标签: apache-camel apache-servicemix fuseesb

我在服务组合中部署了我的骆驼软件包并且运行良好一段时间,现在经过多次运行后,相同的软件包告诉以下异常。

org.apache.camel.runtimeexception :java.lang.illegalstateexception:  bundlecontext is no longer valid

同样的情况在一些运行中运行良好,并且突然连续几次运行会引发上述错误。

重启smx或卸载捆绑包会解决问题吗?这是我第三次遇到这个问题,并且一直有一个小的重启就解决了这个问题。如果这是其他问题,请建议。

在我的评论下面

我在我使用的代码中使用了如下代码。

<choice>
<when>
<simple>some condition</simple>

</when>
<when>
<simple>some other condition</simple>
<stop/>
<when>
</choice>
<!--Still more code and logic exists-->

如果我在这里使用过,这就是问题,在第二个条件到来时我该怎么做才能退出。

有什么方法可以阻止进一步执行吗?那就是单独停止执行该特定请求而不是停止路由的方法是什么?在这种情况下,还有其他请求不会受到此停止的影响,并且可以用于其他请求。

我认为在http://camel.apache.org/intercept.html链接中它表示要停止进一步执行但会以任何方式停止路由。

这是否会导致捆绑包不再有效。从这里出现了一个问题,即Spring的配置是什么等同于CamelContext.stop()?

在我的另一条评论之后指向此处。

此外,我们在骆驼拥有更多自定义捆绑包的环境中工作,这有助于我们的开发。这更具体地动态加载路由。当我们给camelCOntext.Start()等时,这可能是导致路线无法正常启动的一个原因吗?

1 个答案:

答案 0 :(得分:0)

从骆驼路线,我无法说出任何错误。 正如您刚才提出的另一个问题,我在这里发布答案:

路径中的

停止元素仅适用于交换,这意味着路由到此点的交换不再被处理。如果要停止路由或驼峰上下文,则需要调用CamelContext.stop()。

如果可以使用camel-controlbus组件在Spring配置中执行此操作。