在Kogito中添加自定义Quarkus资源失败(404未找到)
Kogito自定义REST资源404问题解决
问题原因
你写的标准Quarkus REST资源能在Swagger UI显示但调用返回404,核心原因是Kogito的REST路由机制和原生Quarkus不同:Kogito通过自身的KogitoRestApplication管理REST端点,不会自动扫描注册普通JAX-RS资源类,只有符合Kogito规范的资源才会被纳入路由系统。
正确实现步骤
按照Kogito规范改造你的资源:
- 定义业务接口:先写带JAX-RS注解的接口
import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; @Path("/") public interface IPPv2Resource { @GET @Path("/hello") @Produces(MediaType.TEXT_PLAIN) String hello(); }
- 实现Kogito资源接口:让实现类同时实现业务接口和Kogito的
Resource接口
import javax.enterprise.context.ApplicationScoped; import org.kie.kogito.rest.Resource; @ApplicationScoped public class IPPv2ResourceImpl implements IPPv2Resource, Resource { @Override public String hello() { return "Hello World"; } }
- 确保Maven插件配置正确:项目中的
kogito-maven-plugin会在构建时扫描并处理这类资源,自动生成路由注册代码,让Kogito识别你的端点。
为啥不能直接用通用Quarkus资源?
Kogito为了整合流程、规则等业务逻辑的REST暴露,自定义了一套端点注册和分发机制。普通Quarkus JAX-RS资源不会被Kogito的路由系统识别,所以即使Swagger UI能通过扫描注解显示接口,实际调用时Kogito找不到对应的路由,返回404。
参考文档对应内容:《Kogito创建与运行指南》- 创建自定义REST端点API
内容的提问来源于stack exchange,提问作者aritstack
相关产品推荐
相关产品推荐

