Я пытаюсь вызвать bean-компонент в перехватчике и привязать некоторые параметры с помощью аннотаций, но при вызове метода кажется, что аннотации игнорируются, и вместо этого тело привязывается к первому параметру, а второй параметр имеет значение null.
Я пробовал тот же XPath с помощью Blueprint DSL, и он отлично работает, поэтому я уверен, что проблема не в этом. Мой метод примерно такой: -
public void intercept(
@XPath(value = "//custom:myElement/text()",
namespaces = { @NamespacePrefix(prefix = "custom", uri = "http://my.website.com/custom") },
resultType = String.class) String elementValue,
@Body String body) {
LOG.info("elementValue {}", elementValue);
LOG.info("body {}", body);
}
А мой перехватчик примерно такой.
<camel:interceptSendToEndpoint uri="direct:core-service">
<camel:to uri="bean:interceptor?method=intercept" />
</camel:interceptSendToEndpoint>
Когда перехватчик вызывается, я получаю полный мыльный конверт для первого оператора журнала и нуль для другого.
Нужно ли мне что-то делать, чтобы сделать эту аннотацию bean-компонента осведомленной? Из документации кажется, что мне просто нужно добавить аннотации, как указано выше. Я не могу поверить, что это просто не работает.
Это работает в JBose Fuse, так что это верблюд 2.10, если это имеет значение.
Обновить
Я попытался удалить перехватчик из вопроса и просто выполнить простой маршрут, и он все еще не работает. Нужно ли мне как-то набирать входящую строку как XML или это должен быть объект JAXB в теле, чтобы @XPath работал?