JAX-WS和JAX-RS的定义

时间:2013-03-25 18:35:23

标签: java jax-ws jax-rs

我在互联网上的某处读到JAX-WS是一个SOAP实现,而JAX-RS是一个Rest实现。这是真的?是JAX-WS和JAX-RS实现还是规范?

提前致谢。

3 个答案:

答案 0 :(得分:4)

它们是定义API的规范。

他们定义的API(接口,类和异常)需要实现。

JAX-WS的参考实现(RI)包含在Java SE中。 JAX-WS RI是作为​​Metro项目(http://metro.java.net/)的一部分创建的。 Metro包括JAX-WS RI支持的增强功能和功能。在SOAP世界中,Web服务堆栈可以支持WS-Security等可选功能。 Metro支持这些,而JAX-WS RI则不支持。

由于JAX-WS包含在Java SE中,是的,您可以在没有服务器的情况下生成JAX-WS(SOAP)Web服务。这是因为Java SE中包含一个非常基本的HTTP服务器。您使用Endpont类来发布服务。这对于测试而言比其他任何东西都更重要。 JAX-WS包含在Java SE中的真正原因是使其更容易成为SOAP服务客户端。要真正运行JAX-WS Web服务,您需要一台服务器,如GlassFish,JBoss或WebLogic。有一些能力可以将JAX-WS实现添加到Tomcat,但只有真正的Java EE Application Server才能包含完整的开箱即用实现。

JAX-RS的参考实现(RI)名为Jersey(http://jersey.java.net/)。 Java SE中不包含JAX-RS。您必须下载实现。一旦你下载它,<​​em>可以在没有服务器的情况下使用它,但同样,它真的意味着更多用于服务器。下载Jersey的一个原因是让Jersey Client API编写客户端(这不是当前JAX-RS规范的一部分)。与JAX-WS实现一样,您可以将Jersey添加到Tomcat,或者完整的Java EE Application Server将包含JAX-RS实现。

答案 1 :(得分:2)

JAX-WS和JAX-RS都是用于在Java中以各种方式进行通信的库(API)。

正如您所提到的,JAX-WS是一个可用于在Java中进行SOAP通信的库,而JAX-RS允许您使用Java进行REST通信。

答案 2 :(得分:1)

JAX-WS是JSR 224中引入的一组Java接口,类和注释:

  

JAX-RPC 2.0规范扩展了现有JAX-RPC 1.0规范的新功能,包括以下部分或全部功能:直接支持基于JAXB 2.0的数据绑定,支持最新的W3C和WS-I标准(例如,SOAP 1.2,WSDL 1.2),用于Java的标准化元数据 - WSDL映射,易于开发的功能,支持更容易的Web服务演进,改进的处理程序框架,支持异步RPC和非HTTP传输。 / p>

这是一个API,需要运行时实现,例如Apache Axis2提供。

JAX-RS是JSR 311中引入的RESTful客户端/服务器通信的API:

  

此API将使开发人员能够快速构建Java中的Web应用程序,这些Web应用程序是Web设计最佳部分的特征。该JSR将开发一个API,用于在Java平台中提供REST(代表性状态转移 - 参见第3.1节中关于Roy Fielding的论文的参考)。轻量级,RESTful方法正在成为用于在互联网上部署服务的基于SOAP的技术的流行替代方案。目前,使用Java平台构建RESTful Web服务要比构建基于SOAP的服务复杂得多,并且需要使用Servlet或动态JAX-WS API等低级API。正确的实现需要开发人员的高级HTTP知识。

同样,它需要一个实现,例如,Jersey