以Apache Camel正确方式调用多外部Web服务

时间:2014-08-29 00:45:10

标签: web-services apache-camel fuseesb jbossfuse

我被Apache Camel困住了。我需要通过JBOSS FUSE公开Web服务,但我必须返回的有效负载取决于对两个外部Web服务的调用。

因此,第一个外部Web服务具有以下URL:

http://someip/externalWSOne

这会收到一个名为A的参数,并返回三个值X,Y和Z。

第二个,接收名为B,X和Y的三个参数。请注意,X和Y是来自第一个外部Web服务的返回值。

http://someip/externalWSTwo

此第二个外部Web服务返回作为最终有效负载的N1 ... Nn值

最终用户只使用一个Web服务,即我将通过JBOSS FUSE公开的内部服务。出于这个原因,我需要公开一个接收两个参数的Web服务

在Apache驼峰中建模此流程的正确方法是什么?我编写了以下配置,但最终的有效负载是空的:

<cxf:cxfEndpoint id="epInterno" address="/ep-interno/" serviceClass="somePackage.MyWebServiceInterface">
<cxf:cxfEndpoint id="epExterno1" address="http://someip/externalWSOne" serviceClass="somePackage.ExternalWSOneServiceInterface">
<cxf:cxfEndpoint id="epExterno2" address="http://someip/externalWSTwo" serviceClass="somePackage.ExternalWSTwoServiceInterface">

<camelContext id="blueprintContext" trace="false" xmlns="http://camel.apache.org/schema/blueprint">
    <route id="ruta1">
      <from uri="cxf:bean:epInterno"/>
      <process ref="proccesorOne" />
      <to uri="cxf:bean:epExterno1" />
      <process ref="processorTwo" />
      <to uri="cxf:bean:epExterno2" />
    </route>
</camelContext>

外部Web服务的所有工件都是使用Maven插件生成的。

1 个答案:

答案 0 :(得分:0)

好的,我尝试探测我的解决方案,所以我决定编写上面提到的三个项目。

结果:是这是正确的方式*

对于我的情况似乎,当我使用真正的WS时,我遇到了与apache camel流没有严格关系的问题,而不是与这个外部WS的实现有关

所以,如果我有人需要自己测试,可以尝试分析github中项目的以下代码。

由于