Верблюд нормализатор не зарегистрирован
Я пытаюсь реализовать нормализатор так, как это написано здесь: http://camel.apache.org/normalizer.html
Я получаю это исключение:
org.apache.camel.NoSuchBeanException: No bean could be found in the registry for
: normalizer
Мой.configure() в RouteBuilder выглядит так:
public void configure() throws Exception {
JndiContext context = new JndiContext();
context.bind("normalizer", new MyNormalizer());
CamelContext camelContext = new DefaultCamelContext(context);
camelContext.addRoutes(this);
from("activemq:queue:input.splitter")
.split().tokenizeXML("person").streaming()
.to("activemq:queue:output.splitter");
from("activemq:queue:input.normalizer")
.choice()
.when().xpath("//persons/person/position").to("bean:normalizer?method=positionChange")
.end()
.to("activemq:queue:output.normalizer");
}
Нормализатор выглядит так:
public class MyNormalizer {
public void positionChange(Exchange exchange, @XPath("//persons/person/position") String name) {
exchange.getOut().setBody(createPerson(name));
}
private String createPerson(String name) {
return name;
}
}
Я нашел одно решение о добавлении этого фрагмента кода в RouteBuilder:
JndiContext context = new JndiContext();
context.bind("normalizer", new MyNormalizer());
CamelContext camelContext = new DefaultCamelContext(context);
Но это не дало никакого результата. Так в чем может быть проблема здесь?
1 ответ
Решение
Решение было найдено. Бин должен быть указан в файле conf/camel.xml. В моем случае определение выглядит так:
<bean name="normalizer" id="normalizer" class="com.myroute.route.normalizer.MyNormalizer"/>