调用springWs验证来自Camel的消息

时间:2017-02-11 07:47:21

标签: web-services apache-camel spring-ws

在我的应用程序中,如果用户属于授权组,则必须通过调用webservice.e.g来验证传入消息的授权,然后才处理该消息。为此,我必须从传入消息的一个属性构建authorizationRequest,说userId(而不是整个传入消息)并发送到webservice。
我是骆驼的新手。为了在非camel应用程序中实现这一点,我将创建一个webservice客户端,使用userId(param)进行调用并处理响应。 主要的骆驼路线:

from( <URI> ).routeId("UpdateRoute")
                .process("AuthorizationProcessor")
                .process( "ValidateProcessor" )
                .choice()
                .when(matches(cond1)).to("cond1Processor")
                .when(matches(cond2)).to("cond2UpdateProcessor")
                .otherwise().to( "invalidconditionProcessor" );

    } 

使用Camel,我正在调用自定义处理器AuthorizationProcessor并进行web服务调用,就像我在非camel应用程序中所做的那样。 我没有正确使用Camel。
什么应该是进行网络服务呼叫的合适方式。

我尝试创建一个路由AuthorizationRoute,并且我可以使用spring ws组件来进行调用。但是不确定如何调用这个路由以及我应该在哪里构建请求。

1 个答案:

答案 0 :(得分:0)

Camel有几个能够进行Web服务调用(REST或SOAP)的组件。其中一个最受欢迎的是camel-cxf,你猜对了,它使用Apache CXF来进行WS调用。

有各种各样的选择,但归结为包括:

<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-cxf</artifactId>
    <version>x.x.x</version>
    <!-- use the same version as your Camel core version -->
</dependency>

然后在你的路线中:

from( <URI> ).routeId("UpdateRoute")
  .to("cxf:http://address/service?serviceClass=com.MyClass")
  .process( "ValidateProcessor" ) // process the resoponse here
  .choice()
    .when(matches(cond1)).to("cond1Processor")
    .when(matches(cond2)).to("cond2UpdateProcessor")
    .otherwise().to( "invalidconditionProcessor" );