首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Quarkus扩展JAX-RS提供程序未注入CDI Beans

基础概念

Quarkus 是一个为 Kubernetes 环境优化的 Java 框架,旨在简化 Java 应用的开发和部署。它支持多种 Java 标准,包括 JAX-RS(Java API for RESTful Web Services)和 CDI(Contexts and Dependency Injection)。

  • JAX-RS:用于构建 RESTful Web 服务的 Java API。
  • CDI:提供了一种依赖注入机制,使得 Java 对象之间的依赖关系可以通过容器来管理。

相关优势

  • 快速启动时间:Quarkus 应用启动非常快,适合无服务器架构和微服务。
  • 低内存占用:设计用于云环境,优化了内存使用。
  • 集成 Kubernetes:原生支持 Kubernetes,便于部署和管理。
  • 丰富的扩展生态:支持大量第三方库和框架的集成。

类型

Quarkus 扩展可以分为以下几类:

  • 运行时扩展:在应用运行时提供功能。
  • 编译时扩展:在编译时生成额外的代码。
  • 测试扩展:用于测试 Quarkus 应用。

应用场景

Quarkus 适用于以下场景:

  • 微服务架构:轻量级、快速启动的特性非常适合微服务。
  • 云原生应用:与 Kubernetes 的紧密集成使得它成为云原生应用的理想选择。
  • 响应式系统:支持响应式编程模型,适合高并发场景。

问题分析

当 Quarkus 扩展 JAX-RS 提供程序未注入 CDI Beans 时,可能的原因包括:

  1. Bean 未正确注册:CDI Bean 可能没有正确注册到容器中。
  2. 作用域问题:Bean 的作用域可能不正确,导致无法注入。
  3. 依赖冲突:可能存在版本冲突或其他依赖问题。
  4. 配置错误:Quarkus 配置文件中的设置可能不正确。

解决方法

  1. 检查 Bean 注册: 确保 CDI Bean 使用 @ApplicationScoped 或其他适当的作用域注解。
  2. 检查 Bean 注册: 确保 CDI Bean 使用 @ApplicationScoped 或其他适当的作用域注解。
  3. 检查依赖: 确保所有依赖项正确,并且没有版本冲突。可以在 pom.xml 中检查依赖项。
  4. 检查依赖: 确保所有依赖项正确,并且没有版本冲突。可以在 pom.xml 中检查依赖项。
  5. 检查配置: 确保 application.properties 文件中没有错误的配置。
  6. 检查配置: 确保 application.properties 文件中没有错误的配置。
  7. 调试和日志: 启用详细的日志记录,查看是否有相关的错误信息。
  8. 调试和日志: 启用详细的日志记录,查看是否有相关的错误信息。

示例代码

以下是一个简单的 JAX-RS 资源类,展示了如何注入 CDI Bean:

代码语言:txt
复制
import javax.inject.Inject;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

@Path("/hello")
public class GreetingResource {

    @Inject
    MyBean myBean;

    @GET
    @Produces(MediaType.TEXT_PLAIN)
    public String hello() {
        return myBean.getMessage();
    }
}

参考链接

通过以上步骤,应该能够解决 Quarkus 扩展 JAX-RS 提供程序未注入 CDI Beans 的问题。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Quarkus的RESTEasy Reactive集成已合并master

并为我们提供尽可能多的反馈。以典型的Quarkus方式,该项目可作为一组新的扩展使用。...CDI整合 通过JAX-RS的@Context进行的所有注入都委托给Arc。这为用户提供了Arc带给Quarkus所有其他部分的构建时间注入的好处。...其他扩展程序也可以使用吗? 绝对!与现有quarkus-resteasy扩展集成的扩展也与quarkus-resteasy-active扩展集成。...quarkus-resteasy-reactive-qute 些扩展等效于现有的quarkus-resteasy *扩展,因此只需在应用程序中从quarkus-resteasy-jackson切换到quarkus-resteasy-reactive-jackson...此外,如果需要使用JAX-RS客户端,则可以使用quarkus-jaxrs-client扩展(这不是声明性的MicroProfile REST客户端,而是JAX-RS规范指定的程序化客户端)。

24030

Quarkus初体验

Quarkus的目标是使Java成为Kubernetes和无服务器环境中的领先平台,同时为开发人员提供统一的反应式和命令式编程模型,以优化地满足更广泛的分布式应用程序架构。...您将找到Quarkus BOM的导入,从而可以忽略不同Quarkus依赖项上的版本。此外,您可以看到quarkus-maven-plugin负责应用程序打包的人员,还提供了开发模式。...: [cdi, resteasy] $ curl -w "\n" http://localhost:8080/hello hello 使用注射 Quarkus中的依赖注入基于ArC,它是为Quarkus...架构量身定制的基于CDI的依赖注入解决方案。...:quarkus-resteasy-mutiny存在对RESTEasy扩展名()的Mutiny支持,需要添加io.quarkus:quarkus-resteasy-mutiny依赖,官方提供了两种添加依赖的方式

1.3K20
  • Quarkus中的依赖注入(DI)和aop编程(6)

    Quarkus中也实现了一套非标准的cdi规范,下面就来看看Quarkus中的di和aop相关内容。...Quarkus技术交流QQ群:871808563 cdi规范协议:https://docs.jboss.org/cdi/spec/2.0/cdi-spec.html#introduction JSR 365...绑定到生命周期上下文的有状态对象的定义良好的生命周期,其中上下文集是可扩展的 复杂的类型安全的依赖项注入机制,包括在开发或部署时选择依赖项的能力,而无需进行冗长的配置 支持Java EE模块化和Java...,具体的框架只要实现这条接口,就可以正常的提供依赖注入功能,Quarkus就是实现的这套api,但是没有完全实现,所有只有部分功能。...使用时,将自定义的注解标注在类或者方法上即可 Bean列表接口 Quarkus在本地开发时,会自动注册HTTP GET- /quarkus/arc/beans接口,返回所有Bean的列表 结语 以上,是

    32330

    Quarkus云原生java框架简介(1)

    Quarkus 可与常用 Java 标准、框架和库协同工作,例如 Eclipse MicroProfile、Apache Kafka、RESTEasy(JAX-RS)、Hibernate ORM(JPA...Quarkus 的依赖注入解决方案基于 CDI(上下文和依赖注入),且包含一个扩展框架来扩展功能并将其配置、引导并集成到您的应用中。...添加扩展就像添加依赖项一样容易;或者,您可以使用 Quarkus 工具。...此外,它还向 GraalVM(一种通用虚拟机,用于运行以多种语言(包括 Java 和 JavaScript)编写的应用)提供正确信息,以便对应用进行原生编译。 为什么用quarkus?...但是有一个特性是博主体验后在也忘不掉的,Quarkus的实时编码功能,无论你怎么改动你的程序,在下次请求到来时时,总能自动编译加载到最新的代码,而且速度非常快,感受不到重新编译的过程。

    41540

    Red Hat 开源 Quarkus 1.0:Java 已为云原生时代做好了准备

    最近,Red Hat 开源了 Quarkus 1.0 项目,这标志着其在为 Kubernetes 提供 Java 实例上取得了一个里程碑。...Red Hat 工程部副总裁 Mark Little 说,Quarkus 1.0 通过减小 Java 虚拟机(JVM) 的大小,为在 Kubernetes 上构建和部署 Java 应用程序提供了一种更有效的方法...Quarkus 1.0 还利用 Vert.x 为 Java 程序实现了一个全新的非阻塞安全层,此外它还改进了与 应用程序编程接口(API)框架的兼容性,该 API 框架可与 Spring 框架一起用于构建...Quarkus 已经提供了对 Java 框架和库的支持,比如 Eclipse Microprofile、Apache Kafka、RESTEasy(JAX-RS)、Hibernate ORM(JPA)、...上下文和依赖注入CDI)、Infinispan 和 Camel。

    1.4K30

    quarkus依赖注入之一:创建bean

    欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 关于依赖注入 对一名java程序员来说,依赖注入应该是个熟悉的概念...,本文先介绍CDI,再学习如何创建bean实例,全文内容如下 image.png 学习quarkus的依赖注入之前,来自官方的提醒非常重要 官方提醒 在使用依赖注入的时候,quankus官方建议不要使用私有变量...关于CDI 《 Contexts and Dependency Injection for Java 2.0》,简称CDI,该规范是对JSR-346的更新,quarkus对依赖注入的支持就是基于此规范实现的...简单看下CDI规范的内容(请原谅欣宸的英语水平): 该规范定义了一组强大的补充服务,有助于改进应用程序代码的结构 给有状态对象定义了生命周期,这些对象会绑定到上下文,上下文是可扩展的 复杂的、安全的依赖注入机制...会话上下文 一个SPI:允许便携式扩展与容器的集成(integrate cleanly ) 关于CDI的bean CDI的实现(如quarkus),允许对象做这些事情: 绑定到生命周期上下文 注入

    1.1K50

    云原生时代高性能Java框架—Quarkus(一)

    Quarkus 可与常用 Java 标准、框架和库协同工作,例如 Eclipse MicroProfile、Apache Kafka、RESTEasy(JAX-RS)、Hibernate ORM(JPA...Quarkus 的依赖注入解决方案基于 CDI(上下文和依赖注入),且包含一个扩展框架来扩展功能并将其配置、引导并集成到您的应用中。...添加扩展就像添加依赖项一样容易;或者,您可以使用 Quarkus 工具。...对于Java应用程序,GraalVM可以带来很多有价值的好处:更快地运行它们,通过脚本语言(JavaScript, R, Python...)提供扩展性或创建提前编译的本机映像(native-image...它提供了一个方便的命令行界面(CLI)和API,用于安装,切换,删除和列出候选人。

    4.5K30

    Quarkus 2.8.0引入了细粒度的Transaction API

    开发人员需要在他们的应用程序中明确指定 AssertJ 3.22.0 改动 默认集成了RESTEasy Reactive REST层和GraalVM 22.0。...细粒度的编程事务API提供了对事务的更多控制。 引入了RESTEasy Reactive 集成,这是JAX-RS的反应式实现,由Vert.x实现。...(); // implementation QuarkusTransaction.commit(); 该事务被绑定到CDI请求范围,并在异常破坏请求范围时自动回滚。...Quarkus现在支持OpenID连接(OIDC)的密钥交换证明(PKCE),这是OAuth 2.0协议上的一个身份层。PKCE是OAuth 2.0的扩展,以减轻公共客户端请求访问令牌时的安全威胁。...当使用Elasticsearch扩展名时,在Dev和test模式下运行测试时,Elasticsearch服务会自动启动一个Elasticsearch容器,除非显式禁用,例如,quarkus.devservices.enabled

    23020

    Quarkus 2.8.0引入了细粒度的Transaction API

    开发人员需要在他们的应用程序中明确指定 AssertJ 3.22.0 改动 默认集成了RESTEasy Reactive REST层和GraalVM 22.0。...细粒度的编程事务API提供了对事务的更多控制。 引入了RESTEasy Reactive 集成,这是JAX-RS的反应式实现,由Vert.x实现。...(); // implementation QuarkusTransaction.commit(); 该事务被绑定到CDI请求范围,并在异常破坏请求范围时自动回滚。...Quarkus现在支持OpenID连接(OIDC)的密钥交换证明(PKCE),这是OAuth 2.0协议上的一个身份层。PKCE是OAuth 2.0的扩展,以减轻公共客户端请求访问令牌时的安全威胁。...当使用Elasticsearch扩展名时,在Dev和test模式下运行测试时,Elasticsearch服务会自动启动一个Elasticsearch容器,除非显式禁用,例如,quarkus.devservices.enabled

    16730

    Java 近期新闻:JDK 18 进入 Rampdown 阶段,JDK 19 专家组成立,Log4j2 漏洞

    最初基于各自相应 JSR 的 CDIJAX-RS、JSON-P 和 JSON-B API,现在已转为相应的 Jakarta EE 9.1规范声明,分别为 Jakarta 上下文和依赖注入 3.0(CDI...)、Jakarta RESTful Web 服务 3.0(JAX-RS)、Jakarta JSON 处理 2.0(JSON-P)和 Jakarta JSON 绑定 2.0(JSON-B)。...更多细节,提供在“变更日志”中。...已 发布 的 Hibernate Search 6.1.0.Beta1 版,包括可动态扩展的分布式索引、支持 Jakarta EE 9.1、自定义 Elasticsearch 索引映射等新特性。...Quarkus 红帽上周发布了 Quarkus 2.5 的 第 2 个维护版本2.5.2.Final,其中修复了大量软件缺陷,并对文档做了改进。更多细节,参见“变更日志”。

    74640

    干货分享:基于JBoss的七个Java应用场景

    CDI注入注入了CustomerDAO和web.xml ? @PostConstruct触发在由CDI容器设置CDI注入字段后调用init()方法。 在这种情况下,该方法用于与客户建立模拟数据库。...查看检索Customer对象的机制: 在JAX-RS中,HTTP GET操作用于检索资源。 通常,资源的URI必须提供附加信息,以便该方法知道要检索哪个资源。 ?...接下来,激活CDI: touch src/main/webapp/WEB-INF/beans.xml 编辑web.xml以便激活JAX-RS,增加如下内容: vi src/main/webapp/WEB-INF...元素使容器能够提供max-set-size资源值。 回想一下,在构造对象时,这个资源值被容器注入到CustomerResource.java对象中。...生成文件: touch src/main/webapp/WEB-INF/beans.xml。 该文件的作用是让 CDI激活应用。 接下来,运行应用: ? ? 然后通过浏览器访问应用: ?

    2.2K50

    Quarkus集成Dubbo Rpc远程通讯框架(8)

    好在dubbo的设计比较优良,除了提供在spring环境下的自动装备加载,还可以通过手动编程的方式集成dubbo。...dubbo配置实例,通过配置,可以实例化出ApplicationConfig、RegistryConfig、ProtocolConfig等实例,这里创建实例时,只设置了最基本的dubbo属性,更多的属性配置扩展可以在这个地方修改...= new HashMap(6); beans.put(TestService.class, testService); beans.forEach(this::registerDubboService...最后通过@Produces注解,将api实例注册到本地quarkus的bean上下文中,完成后就可以通过@Inject注解注入直接使用dubbo服务了,如: @Path("/dingservice")...相信随着对QuarkusCDI的深入了解,这块也会有突破,那个时候就可以像spring中那么使用dubbo了

    25530

    Quarkus的拦截器ContainerRequestFilter注入Bean异常(19)

    前言 今天升级了quarkus到最新版本1.8.0.final版本,然后就GG了,之前在ContainerRequestFilter注入的一个业务Bean就报错了,百度和Google 了半天没找到具体的解决方案...ContainerRequestContext requestContext) throws IOException { //保存请求日志 } } 这是一段拦截器代码,用于统一拦截请求记录请求的日志信息,注入的对象是一个日志服务对象...must not be accessed during STATIC_INIT - RUNTIME_INIT build steps that require access to synthetic beans...如果用异常message搜解决方案肯定都是搜索到quarkusCDI文档,quarkusCDI文档中确实给出了解决方案,但是实施起来比较复杂,最终博主在一个stackoverflow解答中找到了灵感解决了问题...) throws IOException { LogService log = logService.get(); //保存请求日志 } } 看到区别了吧,注入的对象被

    17040

    quarkus依赖注入之八:装饰器(Decorator)

    欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 本篇概览 本篇是《quarkus依赖注入》系列的第八篇...,目标是掌握quarkus实现的一个CDI特性:装饰器(Decorator) 提到装饰器,熟悉设计模式的读者应该会想到装饰器模式,个人觉得下面这幅图很好的解释了装饰器模式,左下角的红框是关键点:自己的send...框架下通过装饰器扩展应用 quarkus是按照CDI的标准来支持装饰器模式的,下图来自官方文档 接下来进入实战环节 实战功能说明 网上讲述装饰器模式的文章中,有个咖啡价格的例子非常经典,如下图所示:...是被装饰类,要用注解Delegate修饰, Latte的成员变量delegate并未指明是Espresso,quarkus会选择Espresso的bean注入到这里 在getPrice方法中打印出delegate.name...Espresso,Latte注入的成员变量是CaramelMacchiato 至此,装饰器的编码实战已完成,相信您可以在应用中用熟练使用装饰器来扩展bean能力,并且保持与原有bean之间的代码低耦合

    61120

    一个高级应用设计概要:完整设计一个高级应用-第一篇

    通过此平台,开发人员可以生成可在浏览器和移动/平板电脑设备中查看的丰富应用程序。企业服务可以使用EJB,JAX-RS和JAX-WS提供给客户端应用程序和企业服务总线。...用户界面组件包括facelets templates, JSF pages, style sheets, images, and backing beans (CDI).。 网页模板。...Backing beans: 支持网页操作的CDI范围bean可以在com.jbtravel.view包中找到。 这些beans在下图中的蓝色方块中描绘。 ?...Web services JBTravel Web应用程序提供了几个JAX-RS Web服务和一个JAX-WS Web服务。 Web服务由EJB提供。 其他由POJO提供。...支持以下Web服务: 用户Web服务(JAX-RS) 此服务提供有关用户的详细信息。 查找条件是用户名。 服务com.jbtravel.beans.UserBean提供

    1.1K20

    使用Eclipse MicroProfile(更新版)构建您的下一个微服务

    MicroProfile由JavaEE的核心技术构建,现在称为Jakarta EE技术: JAX-RS 2.0 CDI 1.2 JSON-P 向他们添加一组可以让你的微服务准备好云计算的规范,其中包括:...如果提供,则将根据类和字段名称生成,以便稍后可以提供配置值。...所以配置也可以像这样注入: @Inject @ConfigProperty private int maxBooks 如果提供默认值,则在应用程序启动时,必须使用根据指定算法生成的名称配置。...配置与bookService分离,可以由应用程序内部的配置提供,甚至可以在应用程序启动时由外部源(例如系统属性)提供。 安全 接下来,我们假设我们也想要处理书籍的创建,出版过程。...将该类转换为CDI bean也很重要,例如通过添加ApplicationScoped注释,因为JAX-RS类不会自动启用CDI

    2.7K20

    Java 近期新闻:JDK 19 的 JEPs、 Lilliput 的里程碑版本、Spring 框架、Quarkus 2.9.0

    )(在 JDK 18 中提供)。...最近,通过 JEP 406,Switch 模式匹配(预览版)(在 JDK 17 中提供)和 JEP 420,Switch 模式匹配(第二个预览版本)(在 JDK 18 中提供),扩展了类型模式以用于 switch...Apache Camel Quarkus 为了与 Quarkus 保持一致,Apache 软件基金会发布了包含 Camel 3.16.0 和 Quarkus 2.9.0.Final 的 Camel Quarkus...其新特性包括:改进了对 JBang 的支持;改进了对 Camel 主应用程序的支持,这样使用依赖注入可以更容易地自动发现 Camel 路由、配置类、类型转换器及其他类;以及从 Vault/Secrets...WildFly 27.0.0.Alpha1 支持上下文和依赖注入CDI)4.0 规范、CDI Lite 和 Hibernate 6.0。

    2.1K30

    JavaEE中资源注入松耦合的实现 | 从开发角度看应用架构13

    由于它与CDI有关,因此上下文指的是按数据范围定义应用程序的能力,CDI指定的依赖注入是一个过程,通过该过程,对象的实例可以以类型安全的方式自动实例化为其他应用程序对象。...EJB规范建立在CDI规范的基础上,提供更多功能,区分无状态bean和有状态bean。 EJB还提供其他功能,例如并发功能,bean池,安全性以及CDI包含的其他功能。...相反,使用CDI来管理上下文和依赖注入。 三、使用依赖注入 CDI不会在Web应用程序、EJB或Java库(JAR)中自动激活,因为容器扫描每个应用程序和每个库都是低效的。...要在Web应用程序中启用CDI,需要WEB-INF目录中放置名为beans.xml的空文件。...对于JAR文件(包括那些包含EJB的文件),将beans.xml文件放在META-INF目录中,同样,beans.xml是空文件就可以。 bean没有特殊的声明或注释来引用CDI

    1.2K20
    领券