如何仅在关机时执行Camel路由?

时间:2014-07-02 09:28:49

标签: spring apache-camel

我有一个Camel 2.13.1应用程序,它使用我通过CXF组件访问的外部Web服务。我使用Spring XML路由元素的startupOrder属性来确保在我设置为在启动时调用一次的路由(使用定时器组件)调用Web服务的Login操作。

当我的应用程序关闭时,我希望Camel调用Web服务并执行注销操作,但我看不到这样做的好方法。我现在正在使用Spring DSL,我正在调查org.apache.camel.spi.ShutdownStrategy接口作为我唯一的希望,但是我能够执行包含我的CXF生成器的路由吗?目前看不清楚。

寻找一些选项,并希望使用Spring DSL来指定路由,如下所示: -

    <route id="logoutFromWebServiceOnShutdownRoute">
        <from uri="direct:logoutFromWebServiceOnShutdown" />
        <process ref="prepareWebServiceLogoutProcessor" />
        <to uri="cxf:bean:webServiceEndpoint?defaultOperationName=logout" />
        <process ref="webServiceLogoutResponseProcessor" />
    </route>

只需要知道如何在关机时调用它!我正在运行Camel作为WAR。

1 个答案:

答案 0 :(得分:0)

我已尝试过路线政策,但无法让它发挥作用。我需要有问题的路由只在关机时运行一次,无法看到如何使用路由策略完成。

相反,我通过在调用我的Logout代码的bean上包含destroy-method属性来利用Spring。

<bean class="com.chris.MyAuthenticationManager" destroy-method="logout" />

这在Camel关闭后运行,并允许我只运行一次代码。缺点是我不能使用Camel注销,我的登录代码与我的注销代码不同。但它起作用并且现在稳定。