gpt4 book ai didi

web-services - 为什么 JAX-WS 是 JDK 的一部分而 JAX-RS 不是?

转载 作者:行者123 更新时间:2023-12-04 23:40:35 25 4
gpt4 key购买 nike

使用 Eclipse 时,我可以使用 JAX-WS 注释(例如 @WebService )而不包含任何外部依赖项,但我不能对 JAX-RS 注释(例如 @Path )做同样的事情。我看了this回答我明白 javax.ws.rs不是 JDK 的一部分。为什么 JAX-WS 是 JDK 的一部分而 JAX-RS 不是?
其次,如果我在 GlassFish 或 WildFly 服务器上部署 JAX-WS 注释应用程序,该服务器是否使用众所周知的 WebService 堆栈来运行应用程序(例如 Metro)或其自己的实现?

最佳答案

JAX-WS:用于 XML Web 服务的 Java API

让我们回到 2006 年。Java SE 6 发布,引入了许多新功能。

引用 Java SE 6 规范 (JSR 270),关于 Java SE 6 中引入的特性:

The feature set for Java SE 6 is driven, in large part, by a set of themes.

The themes describe the main focal points of the release. Some themes are fairly abstract guiding principles; others are more concrete in that they identify particular problem areas, significant new feature sets, or specific target market segments.

[...]

  • XML & Web Services: The Java SE 5 release, as originally proposed, was intended to include a full Web Services client stack. That work unfortunately could not be completed in time for that release, and in the meantime XML and Web Services have only increased in their importance to many members of the community.

[...]



JAX-WS 2.0 规范的目标之一是准备 JAX-WS 以包含在 J2SE 的 future 版本中(后来更名为 Java SE)。引用 JSR 224 :

  • Inclusion in J2SE: JAX-WS 2.0 will prepare JAX-WS for inclusion in a future version of J2SE. Application portability is a key requirement and JAX-WS 2.0 will define mechanisms to produce fully portable clients.


Java SE 6 包含 JAX-WS 2.0 组件,引入了在 Java SE 中创建基于 SOAP 的 Web 服务的可能性。报价 this article来自甲骨文:

One of the most exciting new features of the Java Platform, Standard Edition 6 (Java SE 6) is support for the Java API for XML Web Services (JAX-WS), version 2.0. JAX-WS 2.0 is the center of a newly rearchitected API stack for web services [...].

Although JAX-WS finds its main home in the open-source world of the Java Platform, Enterprise Edition 5 (Java EE 5) and is designed to take the place of Java API for XML-Based RPC (JAX-RPC) in such an environment, you can reuse much of the functionality without even touching an enterprise server [...]

You can use JAX-WS to build web applications and web services, incorporating the newer XML-based web services functionality. [...]

When you run the application, the Java SE 6 platform has a small web application server that will publish the web service. [...]



JAX-RS:用于 RESTful Web 服务的 Java API

JAX-RS 是在 2008 年晚些时候推出的。它最初由 JSR 311 定义。它包含在 Java EE 6 总括规范 ( JSR 316 ) 下。

JAX-RS 的第二个版本于 2013 年推出,由 JSR 339 定义。它包含在 Java EE 7 总括规范 ( JSR 342 ) 下。

JAX-RS 以 HTTP 为中心,JAX-RS 应用程序经常部署在 servlet 容器上。

Java SE 7 ( JSR 336 ) 和 Java SE 8 ( JSR 337 ) 规范不包含 JAX-RS 组件。但是,JAX-RS 应用程序可以在 Java SE 环境中发布(使用 RuntimeDelegate )并且 JAX-RS 实现也可以支持通过 JAX-WS 发布。

在 Java SE 中包含 JAX-RS 也意味着包含该规范的实现。它使 Java SE 环境中的事情变得更加复杂,但在容器将为您提供实现的 Java EE 环境中完全可以接受。例如,GlassFish 为您提供 Jersey(引用实现),而 JBoss/WildFly 为您提供 RESTEasy。

关于web-services - 为什么 JAX-WS 是 JDK 的一部分而 JAX-RS 不是?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38717996/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com