Quarkus扩展添加REST资源后端点不显示,求排查方案
Quarkus扩展REST端点不显示的问题解决
你当前的问题在于:仅通过AdditionalBeanBuildItem将KwarkResource注册为CDI bean,但Quarkus的JAX-RS组件并未识别它是REST资源。需要在构建步骤中添加专门的JAX-RS资源标记构建项,无需依赖beans.xml。
解决方案
修改你的部署处理器代码,添加JaxrsResourceBuildItem构建步骤,明确告知Quarkus该类是JAX-RS资源:
import io.quarkus.arc.processor.DotNames; import io.quarkus.deployment.annotations.BuildStep; import io.quarkus.deployment.builditem.AdditionalBeanBuildItem; import io.quarkus.deployment.builditem.FeatureBuildItem; import io.quarkus.deployment.builditem.jaxrs.JaxrsResourceBuildItem; public class KwarkProcessor { @BuildStep public FeatureBuildItem feature() { return new FeatureBuildItem("kwark"); } @BuildStep public AdditionalBeanBuildItem additionalBeanBuildItem() { return AdditionalBeanBuildItem.builder() .addBeanClass(KwarkResource.class) .setDefaultScope(DotNames.APPLICATION_SCOPED) .setUnremovable() .build(); } @BuildStep public JaxrsResourceBuildItem jaxrsResource() { return new JaxrsResourceBuildItem(KwarkResource.class.getName()); } }
原因说明
Quarkus在无beans.xml的情况下采用隐式归档模式,只会自动扫描应用代码中带有@Path、@GET等JAX-RS注解的类,但对于扩展模块中的类,框架不会自动扫描,必须通过JaxrsResourceBuildItem明确标记,才能让JAX-RS扩展识别并注册该端点。
额外检查
确保扩展的pom.xml中已正确添加JAX-RS相关的部署依赖:
<dependency> <groupId>io.quarkus</groupId> <artifactId>quarkus-jaxrs-deployment</artifactId> <version>${quarkus.version}</version> <scope>provided</scope> </dependency>
内容的提问来源于stack exchange,提问作者h1k0h
相关产品推荐
相关产品推荐

