簡體   English   中英

具有多個輸入參數的Camel CXF Soap Client調用Web服務

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM