2017-02-11 43 views
2

在我的應用程序中,如果用戶屬於授權組,然後只處理消息,我必須通過調用webservice.e.g來驗證傳入消息的授權。爲此,我必須從傳入消息的其中一個屬性(userId,而不是整個傳入消息)構建授權請求併發送到webservice。
我是新來的駱駝。爲了在非駱駝應用程序中實現這一點,我將創建一個web服務客戶端,使用userId(param)調用並處理響應。 主要駱駝航線:調用SpringWs驗證來自Camel的消息

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

    } 

駱駝,我打電話定製處理器AuthorizationProcessor,使一個Web服務調用,因爲我可以在非CAMEL應用做。 我沒有正確使用駱駝。
什麼應該是進行web服務調用的適當方式。

我試着創建一個路由AuthorizationRoute,並且我可以使用spring ws組件來進行調用。但不知道如何調用此路由以及我應該在哪裏構建請求。

+0

你到底是什麼類型的網絡服務的部署REST或SOAP是否運行駱駝作爲獨立的或類似Apache的karaf容器 – noMad17

+0

內我要建立和發送SOAP消息??到webservice.I在Undertow運行Camel在Exchange中有一個屬性設置爲userId。現在我必須調用webservice來操作soap請求中的validateUserId期望UserId。 –

回答

0

駱駝有幾個組件可以進行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"); 
+0

我認爲這個解決方案將用於發送我在交換中的requestbody。我必須建立一個新的請求,並從現場交換併發送到webservice。 –