【问题标题】:Does apache camel support exposing Spring MVC implemented REST services as SOAPapache camel 是否支持将 Spring MVC 实现的 REST 服务公开为 SOAP
【发布时间】:2012-04-18 11:06:39
【问题描述】:

我们目前正在使用 Spring MVC 来实现 REST 服务。我们需要将这些服务实现的一个子集公开为 SOAP。

我查看了 apache camel 文档以查看是否有任何此类直接支持。从文档看来,骆驼可能可以做到,但仅适用于通过 Apache CXF 实现的服务。在下结论之前,我想知道 Spring MVC 实现的 REST 服务是否也可以。

  • camel 是否支持将 Spring MVC 实现的 REST 服务公开为 SOAP 服务
  • 如果是,您能否指点我一些文档。
  • 如果没有,关于为 Spring MVC 实现的 REST 服务实现 SOAP 包装器的任何建议。

【问题讨论】:

  • 您当前的实现是否使用 Camel?或者你目前正在使用直接的 Spring MVC 并考虑使用 Camel 来实现 SOAP 接口?
  • 我们当前的实现不使用骆驼。它使用简单的 Spring MVC 来实现 REST 服务。

标签: spring rest soap cxf apache-camel


【解决方案1】:

首先,没有明显的方法可以在 SOAP 和 REST 之间自动代理。

REST 完全是关于数据/资源(各种形状和颜色)和很少的操作,SOAP 完全是关于 XML 定义数据的操作。

但是使用 Camel 消费 SOAP 消息应该是相当直接的(例如使用 Spring WS)。

然后,您可以使用原始 XML(XPATH 或 XSLT),也可以通过使用 JAXB 将其解组为 Java 对象。这可能是相当自动化的。请参阅(http://camel.apache.org/spring-ws-example.html 获取 Spring WS、Camel 和 JAXB 示例)。我还建议您使用 maven-jaxb2-plugin 基于 SOAP 模式生成带有 JAXB 的 Java 对象。

然后您需要某种查找表在 SOAP 端点/方法/soap 操作之间路由到 REST 服务。这在很大程度上取决于 REST 服务的结构。然后用 Camel 调用 RESTful 资源应该是微不足道的。无论你喜欢什么,都可以考虑它是 HTTP 或 REST。

您必须考虑的可能是此场景中最重要的部分,即您的 REST 服务是否具有除 XML 之外的其他有效负载编码,例如 JSON。然后必须完成 XML 和 JSON 之间的映射。对此没有真正的标准,但 Camel 可以简化这项工作。 Camel 甚至会在下一个版本 2.10 (https://issues.apache.org/jira/browse/CAMEL-4930) 中实现自动转换。

【讨论】:

    【解决方案2】:

    我想您的一个可能选择是使用任何 ESB 并实现一个代理,为 REST API 提供一个 SOAP 接口。

    基本上,ESB 充当接收 SOAP 消息的代理,并将格式转换为 REST 以与现有的 REST API 对话,并将收到的响应转换回 SOAP 以响应客户端。

    这是大多数 ESB 的一个非常常见的用例,我相信 Camel 也可以做到这一点,但您可能还想查看其他 ESB,例如 UltraESB 并在您不受约束时做出决定已经是骆驼了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-09
      • 2015-05-30
      • 1970-01-01
      • 2016-10-18
      相关资源
      最近更新 更多