0

我想整理 SOAP 标头的某些节点以在 apache camel 中执行粘性负载平衡。为此,我正在使用 xpath,我的 xpath 表达式看起来像这样:

.loadBalance().sticky(xpath("substring(string(/*[local-name()='Envelope']/*[local-name()='Header']/*[local-name()='ReplyTo']/*[local-name()='ReferenceParameters']/*[local-name()='ServiceGroupId']/text()), 10)"))
.to(BE1,BE2); 

但是当我执行它时,我得到一个错误:org.apache.camel.builder.xml.InvalidXPathExpression: Invalid xpath:

所以我认为我的 xpath 表达式应该有问题,因此我创建了一个小型 java 程序,它会做同样的事情并执行相同的操作。使用 java,我从我的 xml 中获得了所需的元素。但是我在 apache camel 中遇到了这个错误。

我在这里做错什么了吗?任何帮助将非常感激。

4

1 回答 1

0

我让它工作了!

代码如下:

.loadBalance().sticky(env.xpath("substring(string(/soapenv:Envelope/soapenv:Header/wsa:ReplyTo/wsa:ReferenceParameters/axis2:Serv‌​iceGroupId/text()), 10)", String.class)) 
          .to(BE1,BE2); 

其中 env 是我的命名空间,BE1 和 BE2 是后端服务器!

于 2012-09-15T18:12:44.287 回答