2012-04-18 72 views
1

我们目前使用Spring MVC来实现REST服务。我们需要将这些服务实现的一部分公开为SOAP。apache骆驼支持是否暴露Spring MVC实现REST服务作为SOAP

我看着Apache的骆驼文档,看看是否有任何这样的直接支持。从文档看来,骆驼似乎可以做到,但只有通过Apache CXF实现的服务。在深入研究结论之前,我想知道Spring MVC是否可以实现REST服务。

  • 是否骆驼载体暴露的Spring MVC实现REST服务,SOAP服务
  • 如果是的话,你能指出我的一些文档。
  • 如果不是,那么有关实现Spring MVC的SOAP包装的任何建议都会实现REST服务。
+0

您当前的实施是否使用骆驼?或者你是否正在使用直接的Spring MVC并考虑使用Camel来实现SOAP接口? – 2012-04-18 15:00:18

+0

我们目前的实施不使用骆驼。它使用简单的Spring MVC来实现REST服务。 – Siva 2012-05-03 15:32:16

回答

1

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

基本上ESB充当代理接收SOAP消息和格式转换到REST交谈的现有REST API并且将响应接收回SOAP来响应客户端。

这是一个非常常见的大多数ESB用例,我相信Camel也可以这样做,你怎么可能也想看看其他ESB如UltraESB也要做出决定,如果你不绑定到Camel已经。

3

首先,SOAP和REST之间没有明显的自动代理方式。

REST是所有数据/资源(各种形状和颜色),很少操作,SOAP是所有使用XML定义的数据操作。

但它应该是相当简单的(使用Spring WS例如)消费与骆驼SOAP消息。

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

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

你有什么考虑,这也许是在这种情况下最重要的部分,就是如果你的REST服务featuers其他有效载荷的编码比XML,例如JSON。然后,XML和JSON之间的映射必须完成。对此没有真正的标准,但骆驼可以简化这项工作。骆驼甚至会在下一个版本2.10中自动转换(https://issues.apache.org/jira/browse/CAMEL-4930)。