我目前正在嘗試熟悉Servicemix,Camel,CXF等,並且基本上與四年前有人在這裏的問題相同: How do I convert my BeanInvocation object in camel to a message body and headers? 不幸的是,對我很有幫助。正如答案中提到的那樣:駱駝網站上的所有示例都關注自己發送到來自CXF的bean。Camel:Bean代理到CXF端點
我有我使用一個POJO一個bean代理端點,通過
@Produce(uri ="direct:start")
MyService producer; //public interface example.MyService { void myMethod(MyObject o);}
注入當我使用另一個Bean端點在另一端,實現該接口的消費者,這一切工作正常。我現在想要做的就是使用camel-cxf來消費實現該接口的Web服務。
<cxf:cxfEndpoint id="cxfEndpoint"
address="http://localhost:8080/MyService/services/MyService"
wsdlURL="http://localhost:8080/MyService/services/MyService?wsdl"
serviceName="s:MyService"
serviceClass="example.MyService"
endpointName="s:MyService"
xmlns:s="http://example" />
什麼我現在基本上試圖做的是,在RouteBuilder::我通過創建cxfEndpoint
from("direct:start").to("cxf:bean:cxfEndpoint");
但得到一個異常,試圖調用代理對象上的東西時:
Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: Part
{http://example}o should be of type example.MyObject, not
org.apache.camel.component.bean.BeanInvocation
據我瞭解,春節代理對象產生可被另一個bean端點消耗BeanInvocation對象,我要變成一個方式CXF可以生成一個SOAP再此追求它(或有一些自動轉換?)。
但我有點卡住這樣做: 我想作爲http://camel.apache.org/soap.html或寫我自己的處理器描述肥皂編組,但我也不知道,如果我只是失敗,或者如果這不是它應該如何工作。我也嘗試將cxfEndpoint設置爲不同的消息模式,但沒有成功。
任何指針,我應該普遍做的將不勝感激!
我正在尋找相同問題的答案並找到您的解決方案。然而,我真的沒有得到答案,如果我們使用它來獲取參數,爲什麼我們應該將body設置爲BeanInvocation?這有什麼好處?相反,我們可以設置例如:\t \t \t \t \t MessageContentsList mclOut = new MessageContentsList(); \t \t \t \t mclOut.set(0,「aaa」); \t \t \t \t e.getIn()。setBody(mclOut); – cacert 2015-11-17 09:07:13