You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从OpenEJB调用JAX-RS 2请求:解决javax.ws.rs.client.Client加载问题

解决OpenEJB 4.7.2中加载javax.ws.rs.client.Client的依赖问题

Alright, let's break down what you need to get the javax.ws.rs.client.Client class working in OpenEJB 4.7.2—since WebSphere 9 handles this out of the box, but OpenEJB doesn't include these classes by default.

核心原因

javax.ws.rs.client.Client 是JAX-RS 2.0+ API(Java RESTful Web服务API)的一部分。WebSphere 9预先集成了JAX-RS实现(要么是自身的,要么是Jersey/CXF这类第三方实现),所以你不需要额外配置;但OpenEJB 4.7.2默认没有包含这个客户端栈,因此需要手动添加必要的JAR包。

所需JAR包

你需要两类依赖:定义Client接口的JAX-RS API包,以及该API的具体实现包。这里提供两种常用选择:

选项1: 使用Jersey(Oracle官方参考实现)

将以下JAR包添加到应用的WEB-INF/lib目录,或者OpenEJB的全局lib文件夹中:

  • javax.ws.rs-api-2.1.1.jar(官方JAX-RS 2.1 API;如果你的环境是Java 7,改用2.0.x版本)
  • jersey-client-2.35.jar(Jersey的客户端实现核心包)
  • jersey-common-2.35.jar(Jersey依赖的核心工具包)
  • jersey-media-jaxb-2.35.jar(可选,但处理XML payload时需要)

选项2: 使用Apache CXF

如果你偏好Apache的实现,添加以下包:

  • javax.ws.rs-api-2.1.1.jar(同上的API包)
  • cxf-rt-rs-client-3.4.5.jar(CXF的REST客户端模块)
  • cxf-core-3.4.5.jar(CXF核心工具包)
  • cxf-rt-transports-http-3.4.5.jar(客户端的HTTP传输支持包)

注意事项

  • 版本兼容性: 确保API和实现版本匹配。比如JAX-RS 2.1要求Java 8+,如果你的OpenEJB运行在Java 7环境,就选择JAX-RS 2.0和对应的兼容实现版本(例如Jersey 2.28.x)。
  • 类路径位置: 把JAR包放在应用的WEB-INF/lib下,只会让当前应用可用;添加到OpenEJB全局lib则会对所有部署的应用生效。

验证

添加完JAR包后重启OpenEJB,你遇到的org.apache.openejb.core.TempClassLo...类加载错误应该会消失——容器现在可以找到并加载javax.ws.rs.client.Client类及其配套实现了。

内容的提问来源于stack exchange,提问作者user1329339

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 07:51:52