【问题标题】:Can I use JAX-RS 2.0 in Java EE 6 application我可以在 Java EE 6 应用程序中使用 JAX-RS 2.0
【发布时间】:2018-03-17 05:15:59
【问题描述】:

我们知道 JAX-RS 1.1Java EE 6 的一部分。

是否可以在 Java EE 6 应用程序中使用 JAX-RS 2.0 作为依赖项?

【问题讨论】:

  • “应用程序”是指“容器”吗?如果不是,你能解释一下“应用程序”是什么意思吗?
  • @peeskillet 一个基于 Java EE 6 配置文件的 Web 应用程序。容器可以是 Glassfish、Weblogic 或任何至少支持 Java EE 6 配置文件的容器。
  • 问题在于 JAX-RS 可以与 CDI 和 EJB 等其他 EE 组件一起用于注入。如果您单独使用 JAX-RS,则可以使用较新的版本,但不要指望我提到的任何集成都可以工作。 JAX-RS 只是作为 servlet 运行,因此您只需要配置 servlet。是否会导致类加载问题,这取决于服务器。如果遇到类加载问题(仍然加载旧版本),您可能需要禁用旧版本
  • 就 Glassfish 而言,我不知道。我想我曾经读过 Glassfish 3(即 EE 6)中服务器的其他部分需要 JAX-RS(可能是某个管理门户,我忘了),所以我不知道你是否可以禁用它。 WebLogic,我不确定,我从未使用过它。最好的办法是用谷歌搜索看看是否有人取得了成功,并提供了一些关于如何做到这一点的分步指南。
  • @peeskillet 感谢您的意见。我理解你的意思,但我对 JAX-RS 2.0 版与 Java EE 6 的兼容性更感兴趣。

标签: java rest jakarta-ee jax-rs java-ee-6


【解决方案1】:

JSR 339: JAX-RS 2.0: The Java API for RESTful Web Services 的规范明确指出是否可以在 Java EE 6 应用程序中使用它,答案是肯定的:

2.2 目标Java平台是什么? (即桌面、服务器、个人、嵌入式、卡片等)

本规范针对 Java SE 6.0 或更高版本以及 Java EE 6 或更高的平台

2.3 执行委员会希望确保 JSR 提交者考虑他们提出的技术如何与所有 Java 平台版本。请在此处提供有关哪个平台的详细信息 此 JSR 所针对的版本,以及此 JSR 如何具有 考虑了与其他平台版本的关系。

此 JSR 将单独提供。它还针对 包含在 Java EE 7 平台中。此外,Java EE 6 产品 将允许实现 JAX-RS 2.0 而不是 JAX-RS 1.1

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 更新:

再澄清几点:

【讨论】:

  • “将被允许”是建议还是意味着当前可用的实现支持 Java EE 6?
  • @abbas 不,这不是“推荐”;这是一个断言,如果规范中声明“应允许”而不是“将被允许”,那就更清楚了。我理解“Java EE 6 产品”是指经认证符合 Java EE 6 的软件(例如 Tomcat EE)。因此,规范声明,如果软件使用 JAX-RS 2.0 而不是 JAX-RS 1.x,它将不会无法获得 EE 6 认证。 (我还在上面的帖子中添加了一些说明。)
  • 看来奥莱利的观点是书中的错误oreilly.com/catalog/errata.csp?isbn=0636920028925
  • 只是确认一下:如果我在我的 Java EE 6 Web 应用程序中包含 javax.ws.rs-api-2.0 作为依赖项,它应该可以部署在符合 Java EE 6 的容器上吗?
  • @abbas 很好地了解了 O'Reilly 勘误表,但提出的问题是使用 RestEasy 的构建问题。这并不一定意味着实际问题是使用 JAX-RS 2.0 和 EE 6。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-13
  • 2016-12-06
相关资源
最近更新 更多