0

我有一个 Mule 实例,它被配置为处理来自第三方提供商的 xml 响应。最近,提供程序已移至新修订版,因此更改了 xml 响应。现在我需要一种方法来确定响应是 v1 还是 v2 实现,并调用我这边的适当端点来处理响应。

我目前拥有的是:

<service name="processResponse">
...
    <outbound>
        <pass-through-router>
            <cxf:outbound-endpoint address="..." clientClass="..." wsdlPort="..." wsdlLocation="..." operation="..."/>
        </pass-through-router>
   </outbound>
</service>

我宁愿在 mule 中添加一个过滤器来识别第 3 方的修订版(可能通过响应中的 xml 命名空间),然后调用相应的类。我找不到任何好的例子。

有人可以提供一个如何解决这个问题的例子吗?

4

2 回答 2

1

看看这个例子,其中演示了一些版本转换。

于 2010-07-09T16:10:16.367 回答
0

我怀疑最直接的方法是使用 xpath 过滤器过滤路由。首先为每个版本定义vm服务。接下来,您将通过具有以下出站端点的服务过滤它们。包罗万象总是一个好主意。

<outbound>
  <filtering-router>
    <vm:outbound-endpoint ref="Version1"/>
    <expression-filter evaluator="jxpath" expression="/your/version1/xpath/descriminator"/>
  </filtering-router>
  <filtering-router>
    <vm:outbound-endpoint ref="Version2"/>
    <expression-filter evaluator="jxpath" expression="/your/version2/xpath/descriminator"/>
  </filtering-router>
  <forwarding-catch-all-strategy>
    <stdio:outbound-endpoint system="ERR"/>
  </forwarding-catch-all-strategy>
</outbound>
于 2011-06-01T21:17:57.887 回答