首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >jaxrs-api VS jsr311-api VS javax.ws.rs-api VS jersey-core VS jaxrs-ri

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

Stack Overflow用户
提问于 2015-08-20 06:07:22
回答 1查看 16.6K关注 0票数 33

我在谷歌上搜索了很久,仍然对上面的每一个到底是什么意思感到困惑。

以下是我对它的理解:

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

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

在maven shade插件生成重复警告的情况下,我面临着这些问题,需要正确理解上面的内容,以找出哪些要排除以及为什么要排除。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-20 11:19:27

我先来回答这个问题

"JSR311它是一个规范请求。这意味着它应该是一个文档。为什么它是一个jar?“

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

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

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

  • jaxrs-api -这是规范的RESTeasy's包装。它不是官方的spec jar,但它确实遵守spec合同。RESTeasy将此jar用于整个规范行,即1.x - current。尽管jar确实改变了内部结构以符合不同的JAX-RS versions.
  • jsr311-api -这是JAX-RS 1.x line.
  • javax.ws.rs-api的官方规范jar -这是JAX-RS 2.x line.
  • jersey-core的官方规范jar -这是规范的部分实现。实现的其余部分包含在其他Jersey jars中。请注意,在Jersey的早期版本中,他们实际上将JAX-RS规范API打包到这个jar中。直到后来,Jersey才开始使用官方规范jars.
  • jaxrs-ri -这是打包到一个jar中的完整Jersey 2.x实现。"ri“表示参考实现,这就是Jersey的意思: JAX-RS参考实现。如果您没有使用像Maven这样的依赖项管理器,那么您可能希望只使用这个单独的jar,而不必使用Jersey附带的所有单独的jar。

其他资源

阅读不同规范versions.

还要注意的是,尽管不同的实现遵循规范,但每个实现都有自己的一组额外功能。要了解更多信息,您应该查看不同实现的文档。三种最流行的实现是JerseyRESTeasyCXF

票数 59
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32106428

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档