2012-02-08 2 views
1

나는 낙타 라우팅을 더 많은 dinamically 사용하려고하는데, 거의 문제가 없었습니다. (내가 사용 낙타 core_2.9.0) 나는 지금이 과제가있는 경우Apache Camel - MethodNotFoundException in Transform

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

덕분입니다! 나는 기본 no-arg 생성자 inTransformLogic 클래스가 있고 정적으로 메서드를 설정하면 같은 오류 메시지가 나타납니다. 왜 Camel이 java.lang.class 형식의 "transform"메서드를 찾으려고하는지 이해하지 못합니다. – giacomolm

+0

아. 이것은 버그처럼 보입니다. 이름을 설정하기 위해 .toString을 수행하지만 가져온 다음 bean의 참조로 이름을 사용합니다. 티켓을 기록합니다 : https://issues.apache.org/jira/browse/CAMEL-4997 –

+0

해결 방법은 작동하는 클래스 대신 인스턴스를 전달하는 것입니다. –