我正在尝试在拦截器中调用一个bean并使用注释绑定一些参数,但是当调用该方法时,注释似乎被忽略了,而是正文绑定到第一个参数,第二个参数为空。
我已经使用 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>
当调用拦截器时,我会为第一个日志语句打印一个完整的肥皂信封,而另一个则为 null。
我需要做任何事情来让这个 bean 注释知道吗?从文档看来,我只需要像上面那样添加注释。我不敢相信它只是行不通。
这是在 JBose Fuse 中运行的,所以如果有什么不同的话,那就是骆驼 2.10。
更新
我已经尝试从问题中删除拦截器并仅以简单的路线执行,但它仍然无法正常工作。我是否需要以某种方式将传入的字符串类型转换为 XML,或者它是否需要成为正文中的 JAXB 实体才能使 @XPath 工作?