[英]Camel CXF Soap Client calling web service with multiple input parameters
我正在使用Camel,並已使用CXF從WSDL生成了代碼。 我生成了一個客戶端存根,實現如下所示:
SetDeviceDetailsv4 port = ss.getSetDeviceDetailsv4Port();
com.vodafone.gdsp.ws.SetDeviceDetailsv4_Type _setDeviceDetailsv4_parameters = null;
com.vodafone.gdsp.ws.GdspHeader _setDeviceDetailsv4_gdspHeader = null;
com.vodafone.gdsp.ws.SetDeviceDetailsv4Response _setDeviceDetailsv4__return = port.setDeviceDetailsv4(_setDeviceDetailsv4_parameters, _setDeviceDetailsv4_gdspHeader);
System.out.println("setDeviceDetailsv4.result=" + _setDeviceDetailsv4__return);
如您所見,該端口帶有兩個參數並返回響應,我想將其委托給我的Camel Route。 在Camel中實現此功能的最佳方法是什么? 我已經定義了CXF Enpoint,但我只是在努力解決它的DSL路由部分。 是否應該添加像在此鏈接中找到的處理器一樣的處理器? Apache Camel和Web服務
謝謝
您可以使用jax-ws客戶端(以bean的形式實現)並將其用於駱駝DSL。 JAX-WS客戶端bean定義采用服務類/接口,並允許您配置其他屬性,例如SSL config&等。在路由中,我們可以將其用作bean。 它以JAXB生成的Request對象(WSDL請求對象)作為輸入,並返回JAXB生成的Response對象(WSDL響應對象)。 要將pojo轉換為JAXB類,可以使用Dozer框架,也可以使用自定義映射。 Jax-WS客戶端還可以靈活地將XML作為請求和響應。 在這種情況下,需要將屬性設置為DATAFORMAT作為PAYLOAD。
我不確定這是否是正確的方法,但是我將兩個“輸入”對象都添加為駝峰標頭,然后我編寫了一個處理器,抓取了我需要的東西,並將服務調用所需的兩個對象放入其中。參數。
public void process(Exchange exchange) throws Exception {
Message inMessage = exchange.getIn();
gdspHeader = inMessage.getHeader(GDSP_HEADER, com.vodafone.gdsp.ws.GdspHeader.class);
commModule = inMessage.getHeader(COMM_MODULE_HEADER, resmed.hi.ngcs.datastore.model.CommModule.class);
SetDeviceDetailsv4_Type deviceDetails = createSetDeviceDetailsv4(commModule);
List<Object> params = new ArrayList<>();
params.add(deviceDetails);
params.add(gdspHeader);
inMessage.setBody(params);
}
`
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.