在 OpenLiberty 中升级到 Jakarta-EE 10 后,ClientHeadersFactory 中的 CDI 失败

问题描述 投票:0回答:1

我在 OpenJDK 21.0.1+12-29 上为我的应用程序使用 Open Liberty 23.0.0.12。将 server.xml 升级为使用 Jakarta EE Web Profile 10.0 而不是 9.1 后,

ClientHeadersFactory
中的注入不再起作用。在以下示例代码中,myBean 始终为
null

public class MyFactory implements ClientHeadersFactory {
  @Inject
  private MyBean myBean;

  @Override
  public MultivaluedMap<String, String> update(MultivaluedMap<String, String> incomingHeaders, MultivaluedMap<String, String> clientOutgoingHeaders) {
  }
}

MyBean 类

@RequestScoped
public class MyBean {
}

相关的maven依赖是jakarta.platform:jakarta.jakartaee-api:10.0.0。

我已经将其确定为与 Jakarta EE 10 本身升级相关的内容。 我升级了

beans.xml
web.xml
文件以反映版本更改。 注入接口而不是具体类 MyBean 也不起作用。 也许我错过了一些强制性的配置更改。但目前我没有主意。

jakarta-ee cdi open-liberty
1个回答
0
投票

我能想到的唯一相关更改是,在 EE 10 中,如果您有 empty beans.xml,则会发生行为更改。在 EE 9 (CDI 3.0) 中,空 beans.xml 相当于

bean-discovery-mode=all
,而在 EE 10 (CDI 4.0) 中,它相当于
bean-discovery-mode=annotated

基于您没有收到错误但

myBean
null
这一事实,我怀疑
MyFactory
没有被拾取为CDI bean,因此没有发生注入。

你可以检查一下吗:

  1. 在包含
    MyFactory
    的存档中,是否有beans.xml?如果有的话,是空白的吗?如果不是,它为
    bean-discovery-mode
    设置什么值?
  2. 添加
    @Dependent
    (或另一个定义注释的 Bean,如
    @ApplicationScoped
    )来
    MyFactory
    是否可以解决问题?
© www.soinside.com 2019 - 2024. All rights reserved.