Apache camel 希望构建一个路由,该路由将检查Soap请求的内容并将请求传递给适当的URI
我是来自孟买的阿什什,对阿帕奇骆驼非常陌生 目前,我正在用XML构建一个路由,它将扫描SOAP请求,并将请求重定向到适当的URI 我的Soap请求如下所示:Apache camel 希望构建一个路由,该路由将检查Soap请求的内容并将请求传递给适当的URI,apache-camel,apache-servicemix,fuseesb,Apache Camel,Apache Servicemix,Fuseesb,我是来自孟买的阿什什,对阿帕奇骆驼非常陌生 目前,我正在用XML构建一个路由,它将扫描SOAP请求,并将请求重定向到适当的URI 我的Soap请求如下所示: 验证原始完整性 z4x/FOOR+EPQ0vD9+itPSCBeNR4= 1. 阿尔戈 从这个SOAP信封中,我想使用驼峰路由解析actionId标记的值。 如果actionId的值为1,则必须将路由重定向到callService,或者重定向到另一个服务 我开发了如下路线逻辑: <route> <
验证原始完整性
z4x/FOOR+EPQ0vD9+itPSCBeNR4=
1.
阿尔戈
从这个SOAP信封中,我想使用驼峰路由解析actionId标记的值。
如果actionId的值为1,则必须将路由重定向到callService,或者重定向到另一个服务
我开发了如下路线逻辑:
<route>
<from uri="cxf:bean:comprovaWS?dataFormat=MESSAGE" />
<when>
<xpath>//actionId=1</xpath>
<to uri="log:input" />
<to ref="callService" />
<to uri="log:output" />
</when>
<otherwise>
<to uri="log:input" />
<to ref="otherService"/>
<to uri="log:output" />
</otherwise>
</choice>
</route>
//actionId=1
但这种逻辑是行不通的。
我的路线有错误吗
虽然我是Java爱好者,但我不想在这里使用Java。我想依靠骆驼本身
请尽快帮助我
问候,
Ashish当您使用xpath时,95%的情况下人们遇到的问题通常是由于名称空间造成的。您的SOAP消息是使用命名空间定义的—http://ws.madcomum.comprova.com". xpath表达式必须使用此命名空间才能工作 有关更多详细信息,请参见:,在使用XML配置一节中有一个示例
同样,当您在消息模式下使用CXF时,请阅读关于流缓存的内容,因为消息是基于流的:亲爱的克劳斯,感谢您的回复!!!我使用JavaXPath应用程序检查了XPATH,该应用程序不使用名称空间。除了名称空间之外,路由逻辑是否需要任何更改?我的路线逻辑正确吗?请等待您的答复。在Java中,XPathExpression必须具有名称空间。它是Camel从JDK使用的XPath所必需的。有一种使用local-name()样式的方法(不记得它的确切语法,所以google/在stackoverflow中查看更多)感谢您的建议。。。我已经在标记中添加了名称并启用了。标记中的streamCache。它现在正在工作。。。再次感谢。。。
<route>
<from uri="cxf:bean:comprovaWS?dataFormat=MESSAGE" />
<when>
<xpath>//actionId=1</xpath>
<to uri="log:input" />
<to ref="callService" />
<to uri="log:output" />
</when>
<otherwise>
<to uri="log:input" />
<to ref="otherService"/>
<to uri="log:output" />
</otherwise>
</choice>
</route>