Web services 以正确的方式调用多外部Web服务

Web services 以正确的方式调用多外部Web服务,web-services,apache-camel,fuseesb,jbossfuse,Web Services,Apache Camel,Fuseesb,Jbossfuse,我被阿帕奇骆驼困住了。我需要通过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值,这些值是最终有效负载 最终用户只使用一个w

我被阿帕奇骆驼困住了。我需要通过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服务,即我将通过jbossfuse公开的内部we服务。因此,我需要公开一个接收两个参数的web服务

在ApacheCamel中对该流建模的正确方法是什么?我写入以下配置,但最终有效负载为空:

<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插件生成的。

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

结果:是,这是正确的方法*

似乎在我的案例中,当我使用真正的WS时,我遇到了与ApacheCamel流无关的问题,而不是与这个外部WS的实现有关的问题

因此,如果有人需要自行测试,可以尝试在github中分析以下项目代码


谢谢

最后一段XML无效,因为您有您是否尝试调试路由,例如在每个步骤记录正文内容?是的,我使用cxf entrypoint中的拦截器进行了调试,我看到了epExterno2根据此示例返回的SOAP消息,但由于任何原因,这不能通过camel作为最后一条SOAP消息提取出来。我看到一个与“意外元素”相关的错误。到目前为止,我发布这个问题的目的是了解编排多个web服务的正确方法是上面提出的解决方案。