外部服务的Rest-SOAP门户(Spring + Camel)

Joh*_*ray 2 rest spring soap apache-camel

我需要在两个外部服务之间构建REST-SOAP Gateaway第一个Web服务发出SOAP请求并等待SOAP响应.第二个服务(我的,用Play Framework 1.2.4编写)只能使用RESTful方法.出于多种原因,我不想将SOAP相关的东西与第二个服务集成.所以我需要一些第三项服务来在他们之间采取行动

我已经研究过使用带有Apache Camel的Spring网络应用程序,但仍然无法全面了解,因为Camel有很多模块.CXF-RS和SOAP组件看起来很容易,但我无法弄清楚如何使用它们实现代理.

首先,如何使Camel监听指定的SOAP请求.然后,如何将RESTful服务的响应路由回呼叫服务.

我试图只使用弹簧配置.

cex*_*yat 8

Camel CXF将为您的肥皂终点提供技巧.

首先,您需要编写端点

@WebService
public interface QuoteInEndpoint {

  @WebResult(name = "quote")
  public Quote price(@WebParam(name = "symbol") String symbol);

}
Run Code Online (Sandbox Code Playgroud)

然后你需要声明它

<cxf:cxfEndpoint id="quoteIn" address="http://localhost:9002" serviceClass="my.package.QuoteInEndpoint" />
Run Code Online (Sandbox Code Playgroud)

然后,您可以从此端点构建路由

from("cxf:bean:quoteIn")//
        .process(new Processor() {
          @Override
          public void process(Exchange exchange) throws Exception {
            //do whatever you need to get your object and transform it for your rest service
          }
        })//
        .to("http://myplayframeworkserver/myservice")//
Run Code Online (Sandbox Code Playgroud)

Camel将启动路由,在localhost:9002中显示您的soap服务的wsdl,并且每个soap请求都将发送到您的其余服务器.过程方法可用于将对象整形为正确的休息服务格式(我假设json).您可以使用另一个Camel组件来完成工作(如果您需要json ,可以使用Camel JSON),而不是使用处理器