Camel @XPath и @Body игнорируются при вызове bean-компонента

Я пытаюсь вызвать 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 работал?


person James    schedule 02.01.2014    source источник


Ответы (1)


В Camel была ошибка, из-за которой @XPath для параметров bean-компонента не работал при использовании схемы OSGi AFAIR.

Это исправлено в последнем выпуске Camel, а также в исправлениях для JBoss Fuse, доступных на клиентском портале.

В качестве обходного пути вы всегда можете сделать xpath в bean-компоненте самостоятельно.

person Claus Ibsen    schedule 02.01.2014
comment
Спасибо, я подозревал, что это так, но ничего не нашел, копаясь в ошибках. Я попробую последние патчи в Fuse и убедитесь, что проблема решена. - person James; 02.01.2014
comment
Если все еще есть какая-то проблема, вы можете зарегистрировать тикет на клиентском портале. - person Claus Ibsen; 02.01.2014