JMS / JAXM / JAX RPC / Web服务/ JAX-WS有什么区别?

时间:2010-12-04 21:10:26

标签: web-services jms rpc jaxm

我正在尝试学习不同的Web服务,以了解它们的用途。但是,我很困惑,因为这些术语经常重叠。如果有人能简单地告诉我这些术语之间的区别,我将不胜感激。我遇到了一些来源,例如http://java.sun.com/developer/Books/j2ee/jws/ch07.pdf,但是我无法区分它们。

1 个答案:

答案 0 :(得分:6)

Web服务:符合标准的可调用服务,可能用Java编写,可能用其他一些技术编写,例如: .NET。关键是存在描述服务的标准语言WSDL。 WSDL包含有关传输,协议,服务运行位置,可用操作以及来回流动的有效负载的信息。

您将遇到的大多数Web服务都使用HTTP协议上的SOAP消息(特定的XML格式),因此WSDL将包含调用服务的位置的URL。更一般地说,其他消息格式和协议也是可能的 - 我们马上就会回到这一点。

假设您有一个希望从Java程序调用的服务的WSDL,那么原则上您可以编写Java来格式化合适的XML有效负载并将消息喷射到HTTP连接。完全可行,但非常繁琐,几乎所有代码都是样板代码,可以从WSDL生成。

同样,如果你想用Java创建Web服务,那么你可以从编写WSDL开始,但是再一次有很多用于读取HTTP,解析XML等的标准样板代码。因此,在这两种情况下,您都可以从标准Ja​​va中受益用于完成所有工作的API。有几个这样的API,JAX / RPC和JAX / WS是两个这样的,而JAX / WS是更新的,更容易使用。

另一种集成技术是使用消息传递,有许多供应商提供消息排队产品,因此完全可以将消息从(比如说)Java发送到(比如说)C ++,你只需要就消息格式达成一致(没有标准的WSDL告诉你)。

JMS是一种Java编程API,它提供有关特定供应商的消息传递产品的抽象。如果使用Java,JMS可以为您提供跨消息传递产品的可移植性。 Java EE标准要求Java EE App Server供应商提供消息传递基础架构 - 我相信随着业务系统变得越来越大,它们几乎总是需要一些异步消息传递工具。

将类似WSDL的方法应用于消息传递有各种可能性。例如,可以使用SOAP / JMS而不是SOAP / HTTP编写Web服务。 JAXM是这个领域的新兴API。坦率地说,我不清楚它与SOAP / JMS的关系以及WS-ReliableMessaging等标准。