bean调用时忽略Camel@XPath和@Body

bean调用时忽略Camel@XPath和@Body,xpath,apache-camel,blueprint-osgi,Xpath,Apache Camel,Blueprint Osgi,我试图在拦截器中调用一个bean,并使用注释绑定一些参数,但是当调用该方法时,注释似乎被忽略,而主体绑定到第一个参数,第二个参数为null 我使用Blueprint DSL尝试了相同的XPath,效果很好,所以我确信这不是问题所在。我的方法是这样的:- public void intercept( @XPath(value = "//custom:myElement/text()", namespaces = { @NamespacePrefix(

我试图在拦截器中调用一个bean,并使用注释绑定一些参数,但是当调用该方法时,注释似乎被忽略,而主体绑定到第一个参数,第二个参数为null

我使用Blueprint DSL尝试了相同的XPath,效果很好,所以我确信这不是问题所在。我的方法是这样的:-

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>

当调用拦截器时,我得到一个完整的soap信封,第一个日志语句打印出来,另一个为null

我需要做些什么来使这个bean注释有意识吗?从这个角度看,我似乎只需要添加上面的注释。我真不敢相信它就是不起作用

这是在JBose Fuse中运行的,所以如果这有区别的话,它是骆驼2.10

更新


我试着从问题中删除拦截器,只是简单地执行,但仍然不起作用。我是否需要以某种方式将传入字符串类型转换为XML,或者它是否需要在主体中是JAXB实体才能使@XPath工作?

Camel中有一个bug,在使用OSGi blueprint AFAIR时,导致bean参数上的@XPath无法工作

它在最近发布的Camel和客户门户中提供的JBoss Fuse补丁中得到了修复


作为一种解决方法,您可以自己在bean中执行xpath。

谢谢,我怀疑是这样的,但在探索bug时找不到任何东西。我将在fuse中尝试最新的补丁程序,并确保它已解决。如果仍然存在一些问题,则您可以在客户门户中记录问题。