JAX-RS 和 JAX-WS 有啥区别?

Posted

技术标签:

【中文标题】JAX-RS 和 JAX-WS 有啥区别?【英文标题】:What is the difference between JAX-RS and JAX-WS?JAX-RS 和 JAX-WS 有什么区别? 【发布时间】:2013-05-08 12:54:44 【问题描述】:

在阅读了几篇关于 JAX-RS 和 JAX-WS 的文章后,我有几个问题想确认一下?

    JAX-RS 可以像 JAX-WS 那样做异步请求吗? JAX-RS 能否访问不在 Java 平台上运行的 Web 服务,反之亦然? “REST 对 PDA 和手机等配置有限的设备特别有用”是什么意思? “JAX-RS 不需要 XML 消息或 WSDL 服务-API 定义”是什么意思?

【问题讨论】:

【参考方案1】:

JAX-RS 可以像 JAX-WS 那样做异步请求吗?

是的,它肯定可以使用@Async

JAX-RS 能否访问不在 Java 平台上运行的 Web 服务,反之亦然?

是的,可以的

“REST 对于 PDA 和手机等配置有限的设备特别有用”是什么意思?

它主要用于公共api,这取决于您要使用哪种方法。

“JAX-RS 不需要 XML 消息或 WSDL 服务-API 定义是什么意思?

它有自己的标准 WADL(Web 应用程序开发语言)它有 http 请求,您可以通过它访问资源,它们完全是由不同的思维方式创建的,如果在 Jax-Rs 中您必须考虑公开资源

【讨论】:

【参考方案2】:

JAX-RS 可以像 JAX-WS 那样做异步请求吗?

1) 我不知道 JAX-RS API 是否包含用于异步请求的特定机制,但此答案仍可能根据您使用的客户端实现而改变。

JAX-RS 能否访问不在 Java 平台上运行的 Web 服务,反之亦然?

2) 我想不出有什么理由它不能。

“REST 对于有限配置设备(例如 PDA 和手机)特别有用”是什么意思?

3) 基于 REST 的架构通常会使用轻量级数据格式(如 JSON)来来回发送数据。这与使用 XML 的 JAX-WS 形成对比。我不认为 XML 本身比 JSON 重得多(有些人可能会争辩),但是对于 JAX-WS,使用了多少 XML 最终使带有 JSON 的 REST 成为更轻的选择。

“JAX-RS 不需要 XML 消息或 WSDL 服务-API 定义是什么意思?

4) 如 3 所述,REST 架构通常使用 JSON 来发送和接收数据。 JAX-WS 使用 XML。并不是说 JSON 本身就比 XML 小得多。主要是 JAX-WS 规范在其通信方式中包含大量开销。

关于 WSDL 和 API 定义,REST 将更频繁地使用 URI 结构和 HTTP 命令来定义 API,而不是消息类型,就像在 JAX-WS 中所做的那样。这意味着您不需要发布 WSDL 文档,以便您的服务的其他用户可以知道如何与您的服务交谈。使用 REST,您仍然需要向其他用户提供一些文档,说明 REST 服务的组织方式以及需要发送哪些数据和 HTTP 命令。

【讨论】:

感谢您提供的非常有帮助的答案。您知道还有其他可以区分 JAX-WS 和 JAX-RS 的东西吗?【参考方案3】:

我一直在研究 Apache Axis1.1 和 Axis2.0 以及 JAX-WS,但我建议您必须使用 JAX-WS,因为它允许您以任何格式制作 wsdl,我在 Apache Axis2 中作为 GetInquiry() 进行操作它不允许我以大写开始操作名称,所以我觉得它不好,所以我建议你必须使用 JAX-WS

【讨论】:

【参考方案4】:

JAX-WS - 是用于基于 XML 的 Web 服务的 Java API - 一种以SOAP 表示法(简单对象访问协议)开发 Web 服务的标准方法。

Web 服务的调用是通过远程过程调用来执行的。对于客户端和 Web Service 之间的信息交换,使用的是 SOAP 协议。客户端和服务器之间的消息交换通过基于XML 的 SOAP 消息进行。

JAX-WS Web 服务的客户端需要一个WSDL 文件来生成客户端可以用来调用 Web 服务的可执行代码。

JAX-RS - 用于 RESTful Web 服务的 Java API。 RESTful Web 服务表示为资源,可以通过统一资源标识符 (URI) 进行标识。在这种情况下,远程过程调用表示为HTTP- 请求,必要的数据作为查询的参数传递。 Web Services RESTful - 更灵活,可以使用几种不同的MIME- 类型。通常用于 XML 数据交换或JSON (javascript Object Notation) 数据交换...

【讨论】:

简明扼要的解释!!很棒。【参考方案5】:

另一个重点

JAX-WS 代表 SOAP

JAX-RS 代表 REST

How to choose between JAX-RS and JAX-WS web services implementation?

【讨论】:

实际上,JAX-WS 代表 RESTful 和基于 SOAP 的 Web 服务。一种思考方式是 JAX-RS 专注于 RESTful,而 JAX-WS 允许您更灵活地在两者之间进行选择,同时(在某些情况下)配置更复杂。 感谢您的简单解释。 "JAX-WS 代表 RESTful 和基于 SOAP 的 Web 服务" - 这不是真的,您能否提供一些参考来验证您的声明,JAX-WS 可以传输SOAP over HTTP 和 XML over HTTP,但这使得 JAX-WS 成为 RESTful。 RESTful 是完全不同的概念。

以上是关于JAX-RS 和 JAX-WS 有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 JAX-RS 和 JAX-WS Web 服务实现之间进行选择?

Jersey 与 jax-rs 有啥区别

JAX-RS & JAX-WS

webservice 开发规范

MyEclipse JAX-WS Web Service

JAX-WS、Axis2 和 CXF 的区别