2016-09-23 39 views
0

我想測試通過cxf端點消耗肥皂消息的路由。服務類是帶有2個字符串參數的帶有註釋的(@WebService)接口。如何使用cxf端點消耗肥皂測試路由

我想測試路由,特別是由cxf創建的MessageContentList的處理。

但是如何測試這樣的路線? 我看到2個選項:

  • 直接端點測試替代CXF端點,而是如何創建具有相同的形狀真實消息路由contentlist?
  • 使用真實路由併發送一個xml/soap消息給它,但是如何使用定義soap消息的接口創建這樣一個方法?

還有其他的選擇嗎?

回答

0

爲什麼不使用真正的路由並創建一個使用ProducerTemplate向您的cxf端點發送交換的junit測試(使用CamelTestSupport)?

public class MyTestClass extends CamelTestSupport { 

    @Test 
    public void myTestMethod() { 
     Map<String, Object> headers = new HashMap<String, Object>(); 
     headers.put("content-type","application/xml"; 
     template.sendBodyAndHeaders("<real_cxf_endpoint_url>", "<test_xml_message>", headers); 
    } 
} 

在這裏看到更多的信息:http://camel.apache.org/camel-test.html

+0

的問題是什麼類型的交流應該有,如何創建一個交換是類似於在實(一個xml SOAP消息不知何故轉換爲「MessageContentList」) 我不發出交流有一個例子xml。 – dermoritz

+0

上面的代碼將創建一個類似於真實消息中發送的交換的交換。但是,如果您想首先手動創建交換,請使用Exchange exchange = new DefaultExchange(new DefaultCamelContext())然後,您可以設置所需的任何標題/屬性,並使用template.send(String URI,Exchange exchange)方法覆蓋來調用網絡服務。 –

+0

請選擇我的答案,並加註它,因爲它回答了您原來提出的問題。 –

0
@EndpointInject(uri = "direct:source") 
    protected Endpoint source; 

@Produce 
    protected ProducerTemplate producer; 
@Test 
method() { 
    Exchange response = createAndSendMessage(); 
} 

private Exchange createAndSendMessage() { 
    Exchange exchange = source.createExchange(); 
    exchange.getIn().setBody(contentlist); 
    Exchange response = producer.send(source, exchange); 
    return response; 
} 

如果你想使用XML,在資源文件夾中創建XML輸入文件,並將其設置爲交換體。

exchange.getIn().setBody(requestXML); 
+0

的問題是:如何設置正確的內容列表。同時我只是添加了我用xsd定義的類型的實例。但我不知道訂購。我正在使用get(i)訪問項目。 – dermoritz

+0

在SOAP UI中導入wsdl,從那裏複製請求xml –

+0

有人讀過這個問題嗎?我沒有wsdl。它是代碼第一。有一個帶註釋的Java接口。從這個cxf在運行中生成一個wsdl。 – dermoritz