2012-02-08 107 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