1

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

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

  • 骆驼是否支持将 Spring MVC 实现的 REST 服务公开为 SOAP 服务
  • 如果是的话,你能指点我一些文件吗?
  • 如果没有,关于为 Spring MVC 实现的 REST 服务实现 SOAP 包装器的任何建议。
4

2 回答 2

3

首先,没有明显的方法可以在 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) 中提供自动转换功能。

于 2012-04-19T07:10:34.743 回答
1

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

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

这是大多数 ESB 的一个非常常见的用例,我相信 Camel 也可以做到这一点,但如果您还没有绑定到 Camel,您可能还想查看其他 ESB(如UltraESB)并做出决定。

于 2012-04-19T03:05:44.257 回答