2015-11-04 38 views
0

以下是我在駱駝和cxf中的示例web服務路由。在cxf POJO模式下來自camel的空響應

from("cxf:http://localhost:9000/sampleService?serviceClass=com.sample.CommonIntf") 
.id("wsProxy") 
.bean(MyBean.class) 

只是我將輸入pojo對象傳遞給bean。在bean內部,我正在設置ws響應。這是bean類。

@Handler 
public SOut handle(SInput sin){ 
    SOut s = new SOut(); 
    s.setName(sin.getName()); 
    s.setSurName("aa"); 
    return s; 
} 

但是,我可以看到輸入對象被轉換並交付處理程序方法soap響應是空的。

這是我的Web服務簽名。

public interface CommonIntf{ 
    SOut sampleMethod(SInput input); 
} 

我的問題是雖然我的處理程序返回響應,爲什麼響應soap是空的?

回答

0

我想,你只是沒有設置交換輸出體(request-reply pattern)。

嘗試修改您的路線是這樣的:

from("cxf:http://localhost:9000/sampleService?serviceClass=com.sample.CommonIntf") 
.id("wsProxy") 
.to("bean:MyBean?method=handle"); 

爲myBean類必須管束範圍內註冊。

<bean id="MyBean" class="com.sample.MyBean"/> 
+0

據我所知,在POJO模式下沒有必要。無論如何,我嘗試過,但沒有改變。 – cacert

0

試試下面定義CXF端點 [按http://camel.apache.org/schema/cxf/]在終點bean定義,在此是指服務類, 和駱駝路線參考(例如wsCxfId)相同的ID。 所以路線如下:

from("cxf:bean:wsCxfId") 
.id("wsProxy") 
.to("bean:MyBean?method=handle"); 

希望這會有所幫助。