2013-07-29 97 views
1

我有一個描述Web服務的WSDL文件。然而,還沒有實現,但我在SoapUI中創建了一個模擬服務,它是硬編碼的,可以一次又一次地提供相同的響應。在Camel中使用Web服務

我希望Camel從磁盤向Web服務發送SOAP請求,並將響應寫入另一個文件。我想路由看起來是這樣的:

from(file:data/input/soaprequest) 
.to(wsendpoint) 

from(wsendpoint) 
.to(file:data/input/soapresponse) 

然後我addded他們兩個駱駝背景下,我不知道這是正確的做法,但即使是這樣,我仍然在努力設置webserviceendpoint。既然不能使用Spring XML,這是我有:

CxfEndpoint wsendpoint = new CxfEndpoint(); 
wsendpoint.setAddress("http://localhost:9001/HelloWorld"); 
wsendpoint.setWsdlURL("http://localhost:9001/HelloWorld?WSDL"); 
wsendpoint.setServiceClass("com.generated.HelloWorld"); 
wsendpoint.setCamelContext(camelcontext); 

然後我通過wsendpoint的路線,你可以在上面看到。但沒有任何事情發生。永不停止的應用程序,它並沒有張貼在輸出文件夾中的任何迴應,只是說

INFO: Setting the server's publish address to be http://localhost:9001/HelloWorld 

我也嘗試從了SoapUI發送請求,而應用程序仍在運行,並在應用程序中,我改變不了什麼得到一個404錯誤了SoapUI

回答

2

路線應該是這樣的

from(file:data/input/soaprequest) 
    .to(wsendpoint) 
    .to(file:data/input/soapresponse) 
1

你可以實現你的任務類似如下:

<!--Configure SOAP endpoint in camel--> 
    <cxf:cxfEndpoint id="cxfEndpoint" 
        serviceClass="SEIClassNameHere" 
        address="exposedAdress"> 
    </cxf:cxfEndpoint> 

    <!--Configure consuming camel route--> 
    <route id="consumingFromCXFEndpointRoute"> 
      <from uri="cxf:bean:cxfEndpoint"/> 
      <to uri="file:someFile"/> 
    </route> 

    <!--Configure producing camel route--> 
    <route id="producingToCXFEndpointRoute"> 
      <from uri="timer://foo?period=60000"/> 
      <pollEnrich uri="file:{{sourceFolder}}?maxMessagesPerPoll=1&amp;move= {{destinationFolder}}/${file:name}-${date:now:yyyy-MM-dd-HHmmssSSS}.csv&amp;moveFailed= {{errorFolder}}/${file:name}-${date:now:yyyy-MM-dd-HHmmssSSS}.csv" 
        timeout="5000"/> 
      <to uri="cxf:serviceAddress?serviceClass=SEIClassNameHere&defaultOperationName=methodYouWantToCall"/> 
    </route> 
+0

我認爲它到達那裏。我仍然得到這個:錯誤處理交換。 Exchange [消息:[Body is null]]。由..blabla導致.. GenericFile不能轉換爲java.lang.String –

+1

駱駝嘗試將交換主體轉換爲字符串,然後將其發送到cxf組件,默認情況下它不能轉換。這就是爲什麼你必須實現自己的轉換器,它將文件內容轉換爲你的cxf服務接受的方法參數所需的數據類型。 – Mike

+0

如果參數不止一個,你如何提供參數? –