我想整理一个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中遇到了这个错误。
我在这里做错了吗?任何帮助都会非常感激。
答案 0 :(得分:0)
我搞定了!
代码如下:
.loadBalance().sticky(env.xpath("substring(string(/soapenv:Envelope/soapenv:Header/wsa:ReplyTo/wsa:ReferenceParameters/axis2:ServiceGroupId/text()), 10)", String.class))
.to(BE1,BE2);
其中env是我的命名空间,BE1和BE2是后端服务器!