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

JavaEE EAP环境下OpenAPI Generator生成带实现的API客户端选型咨询

关于OpenAPI Generator Maven插件的疑问

问题背景

使用openapi-generator-maven-plugin:4.3.1时,加载jaxrs生成器失败,已获取到可用的Java相关生成器列表如下:

java
jaxrs-cxf-client
java-inflector
java-msf4j
java-pkmst
java-play-framework
java-undertow-server
java-vertx
java-vertx-web
jaxrs-cxf
jaxrs-cxf-extended
jaxrs-cxf-cdi
jaxrs-jersey
jaxrs-resteasy
jaxrs-resteasy-eap
jaxrs-spec

1. 生成器的服务端/客户端分类

服务端生成器

  • java-inflector:生成基于Inflector框架的服务端代码
  • java-msf4j:生成基于MSF4J框架的服务端代码
  • java-play-framework:生成基于Play Framework的服务端代码
  • java-undertow-server:生成基于Undertow的服务端代码
  • java-vertx、java-vertx-web:生成基于Vert.x的服务端代码
  • jaxrs-cxf、jaxrs-cxf-extended、jaxrs-cxf-cdi:生成基于CXF框架的JAX-RS服务端代码
  • jaxrs-jersey:生成基于Jersey框架的JAX-RS服务端代码
  • jaxrs-resteasy、jaxrs-resteasy-eap:生成基于Resteasy(适配EAP)的JAX-RS服务端代码
  • jaxrs-spec:仅生成符合JAX-RS规范的API接口,无服务端实现
  • java-pkmst:生成基于PKMST框架的服务端代码

客户端生成器

  • jaxrs-cxf-client:生成基于CXF框架的JAX-RS客户端实现代码
  • java:基础Java客户端生成器,可生成通用HTTP客户端实现

2. JavaEE EAP环境下的客户端生成方案

你处于JavaEE EAP环境,需要生成带实现的客户端代码,优先推荐:

  • jaxrs-cxf-client:CXF是EAP支持的JAX-RS实现之一,生成的客户端代码可直接在EAP环境中使用,包含完整的调用逻辑,无需自行编写底层HTTP代码。
  • jaxrs-resteasy-eap:虽然主打服务端代码生成,但部分版本支持生成客户端代码,适配EAP自带的Resteasy组件,兼容性更好。

如果上述生成器无法满足需求,Java 8非Spring的EAP环境下可采用以下实现方式:

  1. 手动基于Resteasy Client API实现:EAP内置Resteasy,直接用ResteasyClientBuilder创建客户端,结合JAX-RS注解编写调用逻辑,示例代码:
ResteasyClient client = new ResteasyClientBuilder().build();
ResteasyWebTarget target = client.target("https://external-api-url");
ExternalApiService service = target.proxy(ExternalApiService.class);
// 调用接口方法
service.someMethod();
  1. 使用Apache HttpClient:直接编写HTTP请求,自行处理请求/响应的序列化与反序列化,适合需要精细控制请求细节的场景。
  2. 基于Jersey Client API实现:若EAP配置了Jersey作为JAX-RS实现,可直接使用Jersey的客户端API调用外部接口,示例代码:
Client client = ClientBuilder.newClient();
WebTarget target = client.target("https://external-api-url");
Response response = target.request(MediaType.APPLICATION_JSON).get();
// 处理响应结果

3. 关于<generateSupportingFiles>true</generateSupportingFiles>的使用

靠该配置生成POM文件获取依赖确实不够直观,更推荐以下方式:

  1. 查阅对应生成器的官方文档,手动添加所需依赖到项目POM中。例如使用jaxrs-cxf-client时,需添加CXF客户端相关依赖:
<dependency>
    <groupId>org.apache.cxf</groupId>
    <artifactId>cxf-rt-rs-client</artifactId>
    <version>${cxf.version}</version>
</dependency>
<dependency>
    <groupId>org.apache.cxf</groupId>
    <artifactId>cxf-rt-transports-http</artifactId>
    <version>${cxf.version}</version>
</dependency>
  1. 使用插件的<dependencyManagement>配置,让插件自动管理依赖,但需确保插件版本与EAP环境的依赖版本兼容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 08:31:07