gpt4 book ai didi

rest - jaxrs-api VS jsr311-api VS javax.ws.rs-api VS jersey-core VS jaxrs-ri

转载 作者:行者123 更新时间:2023-12-02 00:03:12 28 4
gpt4 key购买 nike

我在谷歌上搜索了很多,但仍然对上述每一项的确切含义感到困惑。

这是我的理解:

  • jaxrs-api :仅包含 api。没有实现。但它与 JSR311 有什么不同
  • jsr311-api:JSR311它是一个规范请求。这意味着它应该是一个文档。那为什么它是一个 jar 呢?
  • javax.ws.rs-api:它是一个实现吗?
  • jersey-core(/jersey client):是 JSR311 的实现。

我下载了每个 jar 并尝试反编译并查看其中的内容,但我只能在所有这些 jar 中找到接口(interface),而无法找到实现。

我在 Maven Shade 插件生成的重复警告的背景下面临这些问题,并且需要正确理解上述内容以找出要排除哪些警告以及原因。

最佳答案

我先回答这个问题

"JSR311 it is a specification request. Which means it is supposed to be a document. Why then is it a jar?"

除了最后一个(jersey-core),所有这些 jar 都是“规范”jar。 JAX-RS(以及许多其他 Java)规范定义了实现者应为其实现指定行为的契约(或接口(interface))。

所以基本上规范中指定的所有类都应该作为契约放在 jar 中。这些 jar 的最终用户可以将它们用于契约(Contract)。但没有实现。您需要有一个实际的实现来运行应用程序,尽管规范 API jar 足以编译一个完整的 JAX-RS 兼容应用程序。

例如,如果我们在类路径上有这些规范 API jar 之一,我们可以编写整个 JAX-RS 应用程序并编译它,但是为了运行它,如果我们没有实际的实现,我们需要部署到实际实现该规范版本的服务器,例如 JBoss 或 Glassfish

<小时/>
  • jaxrs-api - 这是RESTeasy's规范的包装。它不是官方规范 jar ,但它确实遵守规范契约(Contract)。 RESTeasy 将这个 jar 用于整个规范行,即 1.x - 当前。尽管该 jar 确实更改了内部结构以遵循不同的 JAX-RS 版本。

  • jsr311-api - 这是 JAX-RS 1.x 系列的官方规范 jar。

  • javax.ws.rs-api - 这是 JAX-RS 2.x 系列的官方规范 jar。

  • jersey-core - 这是规范的部分实现。其余的实现包含在其他 Jersey jar 中。请注意,在 Jersey 的早期版本中,他们实际上将 JAX-RS 规范 API 打包到此 jar 中。直到后来,Jersey 才开始使用官方规范 jar。

  • jaxrs-ri - 这是打包到一个 jar 中的完整 Jersey 2.x 实现。 “ri”表示引用实现,这就是 Jersey:JAX-RS 引用实现。如果您不使用像 Maven 这样的依赖管理器,您可能只想使用这个单个 jar,而不必使用 Jersey 附带的所有单独的 jar。

其他资源

另请注意,尽管不同的实现都遵循规范,但每个实现都有自己的一组额外功能。要了解更多信息,您应该阅读不同实现的文档。三个最流行的实现是 Jersey , RESTeasy ,和CXF

关于rest - jaxrs-api VS jsr311-api VS javax.ws.rs-api VS jersey-core VS jaxrs-ri,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32106428/

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