OpenLiberty 不支持 JAX-RS 1.1:兼容性限制与正确配置指南

星杰酱_1170

星杰酱_1170

2026-03-26

460人浏览

原创

OpenLiberty 不支持 JAX-RS 1.1:兼容性限制与正确配置指南

OpenLiberty 官方仅支持 JAX-RS 2.0 及更高版本(如 2.1、3.0),不提供对已废弃的 JAX-RS 1.1 规范的任何功能支持;尝试通过 Maven 引入 jsr311-api 并启用 jaxrs-1.1 特性将导致配置失败或运行时异常。

openliberty 官方仅支持 jax-rs 2.0 及更高版本(如 2.1、3.0),**不提供对已废弃的 jax-rs 1.1 规范的任何功能支持**;尝试通过 maven 引入 `jsr311-api` 并启用 `jaxrs-1.1` 特性将导致配置失败或运行时异常。

OpenLiberty 是一个面向云原生与微服务架构设计的轻量级 Jakarta EE 和 MicroProfile 运行时,其核心设计理念之一是主动弃用过时规范,以保障安全性、可维护性与标准化演进。JAX-RS 1.1(JSR-311)早在 2009 年发布,已于 2013 年被 JAX-RS 2.0(JSR-339)正式取代,并在后续 Jakarta EE 版本中完成向 jakarta.ws.rs.* 命名空间迁移。因此,OpenLiberty 自诞生起即未实现、未打包、也未声明兼容 JAX-RS 1.1 —— 不存在“嵌入式隐藏支持”,也无 jaxrs-1.1 特性可用。

✅ 正确配置方式:使用 JAX-RS 2.0+ 特性

若需启用 RESTful Web Services 支持,请在 server.xml 的 中明确声明受支持的 JAX-RS 特性之一:

<featuremanager><feature>servlet-3.1</feature><feature>transportSecurity-1.0</feature><!-- ✅ 推荐:JAX-RS 2.0(兼容 Jakarta EE 8 / Java EE 7) --><feature>jaxrs-2.0</feature><!-- 或升级至:JAX-RS 2.1(Jakarta EE 8+) --><!-- <feature>jaxrs-2.1</feature> --><!-- 或 Jakarta EE 9+ 推荐:RESTful Web Services 3.0(基于 jakarta.* 命名空间) --><!-- <feature>restfulWS-3.0</feature> --></featuremanager>

⚠️ 注意:jaxrs-2.0 与 jaxrs-2.1 特性自动包含并启用底层依赖(如 JSON-P、CDI 等必要组件),无需手动添加 cxf-rt-* 或 jersey-* 等第三方库。

❌ 错误实践与常见误区

  • 错误引入 jsr311-api:1.1.1:该依赖与 OpenLiberty 内置的 JAX-RS 2.x 实现存在类冲突(如 javax.ws.rs.core.Response 冲突),极易引发 LinkageError 或 ClassCastException。
  • *误删 `jaxrs-特性后仍能接收 PUT 请求**:您观察到的PUT调用“看似成功”实为 Servlet 层直接处理(例如HttpServlet.doPut()),而非 JAX-RS 资源路由;日志中org.apache.cxf.jaxrs.interceptor.JAXRSDefaultFaultOutInterceptor报错正说明 CXF 的 JAX-RS 拦截器被意外触发——根源在于应用代码中混用了 JAX-RS 1.1 注解(如@Path`)但容器未启用对应规范支持,导致行为不可控。
  • 混淆 javaee-api 与运行时能力:javax:javaee-api:6.0 仅为编译期桩(stub),它不提供运行时实现,且其 JAX-RS 1.1 类型与 OpenLiberty 的 JAX-RS 2.x 运行时完全不兼容。

✅ 迁移建议:从 JAX-RS 1.1 升级到 2.0+

若您现有代码基于 JAX-RS 1.1,迁移成本通常较低,主要涉及以下变更:

JAX-RS 1.1 JAX-RS 2.0+(推荐)
@PathParam("id") String id 语法不变(向后兼容)
Response.ok(entity).build() ✅ 保持可用;新增 Response.ok().entity(entity).build() 链式调用
Client client = Client.create() ❌ 已废弃 → 改用 ClientBuilder.newClient()
@Provider + MessageBodyReader ✅ 接口签名一致,但需确保实现类由 CDI 或 @ApplicationPath 应用自动发现

同时,请同步更新 Maven 依赖,移除所有 JAX-RS 1.1 相关依赖,改用 Jakarta EE 8/9+ 兼容 API:

<!-- ✅ Jakarta EE 8(推荐用于 OpenLiberty 21.0.0.12 及以上) -->
<dependency><groupid>jakarta.platform</groupid><artifactid>jakarta.jakartaee-api</artifactid><version>8.5.0</version><scope>provided</scope></dependency>

或针对较新版本(如 OpenLiberty 23.0.0.9+)使用 Jakarta EE 9+:

<dependency><groupid>jakarta.platform</groupid><artifactid>jakarta.jakartaee-web-api</artifactid><version>9.1.0</version><scope>provided</scope></dependency>

总结

OpenLiberty 不支持、不兼容、也不允许启用 JAX-RS 1.1。所谓“嵌入式抽象”实为误解——其特性模型(feature model)严格遵循 Jakarta EE 规范演进路线,仅暴露经验证、安全、主流的标准实现。开发时应始终查阅 OpenLiberty 官方特性参考文档,以 jaxrs-2.0 或更高版本为起点构建 RESTful 服务,并及时清理遗留的 JSR-311 依赖与注解。坚持标准兼容性,是保障应用长期可维护与云平台适配性的关键基础。

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
java
java

Java是一个通用术语,用于表示Java软件及其组件,包括“Java运行时环境 (JRE)”、“Java虚拟机 (JVM)”以及“插件”。php中文网还为大家带了Java相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

2023.06.15

11057

6

java正则表达式语法
java正则表达式语法

java正则表达式语法是一种模式匹配工具,它非常有用,可以在处理文本和字符串时快速地查找、替换、验证和提取特定的模式和数据。本专题提供java正则表达式语法的相关文章、下载和专题,供大家免费下载体验。

2023.07.05

8162

9

java自学难吗
java自学难吗

Java自学并不难。Java语言相对于其他一些编程语言而言,有着较为简洁和易读的语法,本专题为大家提供java自学难吗相关的文章,大家可以免费体验。

2023.07.31

7072

8

java配置jdk环境变量
java配置jdk环境变量

Java是一种广泛使用的高级编程语言,用于开发各种类型的应用程序。为了能够在计算机上正确运行和编译Java代码,需要正确配置Java Development Kit(JDK)环境变量。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

2023.08.01

1184

3

java保留两位小数
java保留两位小数

Java是一种广泛应用于编程领域的高级编程语言。在Java中,保留两位小数是指在进行数值计算或输出时,限制小数部分只有两位有效数字,并将多余的位数进行四舍五入或截取。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

2023.08.02

968

3

java基本数据类型
java基本数据类型

java基本数据类型有:1、byte;2、short;3、int;4、long;5、float;6、double;7、char;8、boolean。本专题为大家提供java基本数据类型的相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.02

1436

5

java有什么用
java有什么用

java可以开发应用程序、移动应用、Web应用、企业级应用、嵌入式系统等方面。本专题为大家提供java有什么用的相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.02

2909

5

java在线网站
java在线网站

Java在线网站是指提供Java编程学习、实践和交流平台的网络服务。近年来,随着Java语言在软件开发领域的广泛应用,越来越多的人对Java编程感兴趣,并希望能够通过在线网站来学习和提高自己的Java编程技能。php中文网给大家带来了相关的视频、教程以及文章,欢迎大家前来学习阅读和下载。

2023.08.03

20191

3

配置java环境变量
配置java环境变量

配置Java环境变量是为了让操作系统能够识别和使用Java的相关命令和功能。本专题为大家提供配置java环境变量相关文章,帮助大家解决问题。

2023.08.03

1275

8

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.7万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 133.9万人学习