Я пытаюсь использовать маршрутизацию верблюдов более динамически, но у меня были небольшие проблемы. (я использую верблюжьей 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
Где я обижаю? Благодаря
спасибо за ответ! У меня есть конструктор по умолчанию no-arg inTransformLogic и установка метода на статический i получает ту же ошибку. Я не понимаю, почему Camel пытается найти метод «transform» типа java.lang.class ?? – giacomolm
А это похоже на ошибку, так как она делает .toString, чтобы установить имя, но затем пикап и использовать имя в качестве ссылки для bean-компонента. Будет зарегистрирован билет: https://issues.apache.org/jira/browse/CAMEL-4997 –
Обходной путь заключается в передаче экземпляра вместо класса, который должен работать. –