2012-02-08 108 views
1

我試圖更多地使用駱駝路由,但我沒有什麼麻煩。 (我用駱駝core_2.9.0)Apache Camel - 變換中的MethodNotFoundException

我使用的路由定義

Object methodclass; 
String methodname; 

context.addRoutes(new RouteBuilder() { 
@Override 
public void configure() throws Exception { 
    // TODO Auto-generated method stub 
     from("vm:internal0"). 
     transform().method(methodclass, methodname). 
     to("vm:receiver"); 
    } 
}); 

現在,如果有這樣的分配變換方法(假設我已經TransformLogic類「改造」方法)

methodclass = new TransformLogic(); 
methodname = "transform"; 

我沒有問題,但如果我有這樣的任務

methodclass = TransformLogic.class; 
methodname = "transform"; 
. 
. 

駱駝引發'

org.apache.camel.FailedToCreateRouteException: Failed to create route route3 at: >>> Transform[bean{java.lang.Class, method=transform}] <<< in route: Route[[From[vm:internal0]] -> [Transform[bean{java.lang.Clas... because of org.apache.camel.component.bean.MethodNotFoundException: Method with name: transform not found on bean: class core.compoundterm.primitiveterm.DefaultTransformLogic of type: java.lang.Class 

我在哪裏錯了? 感謝

回答

1

確保TransformLogic類設有一張 - 默認的無參數的構造函數 - 或者說方法名稱是一種公共靜態方法

+0

感謝的答覆!我有默認的無參數構造函數inTransformLogic類,並將方法設置爲靜態我收到相同的錯誤..我不明白爲什麼駱駝試圖找到類型java.lang.class的「變換」方法?? ?? – giacomolm 2012-02-08 12:21:48

+0

啊,這看起來像一個bug,因爲它做了一個.toString來設置一個名字,但是然後拾取並使用該名稱作爲bean的引用。將記錄一張票:https://issues.apache.org/jira/browse/CAMEL-4997 – 2012-02-09 14:55:53

+0

解決方法是傳入一個實例而不是類,這應該工作。 – 2012-02-09 14:56:51