Websphere liberty 使用microprofile config api:WELD-001408:类型字符串与限定符@ConfigProperty的未满足依赖关系

Websphere liberty 使用microprofile config api:WELD-001408:类型字符串与限定符@ConfigProperty的未满足依赖关系,websphere-liberty,open-liberty,microprofile,Websphere Liberty,Open Liberty,Microprofile,我正在使用mpConfig-1.2功能,但在我的设置中它似乎不起作用 使用Liberty 18.0.0.2 在为microprofile config api添加了maven依赖项后,CDI工作正常,但@ConfigProperty在启动时失败,并显示消息 [ERROR ] CWWKZ0106E: Could not start web application demo-service-ear {1.0-SNAPSHOT}. [ERROR ] CWWKZ0004E: An excepti

我正在使用mpConfig-1.2功能,但在我的设置中它似乎不起作用

使用Liberty 18.0.0.2

在为microprofile config api添加了maven依赖项后,CDI工作正常,但@ConfigProperty在启动时失败,并显示消息

[ERROR   ] CWWKZ0106E: Could not start web application demo-service-ear {1.0-SNAPSHOT}.
[ERROR   ] CWWKZ0004E: An exception occurred while starting the application demo-service-ear {1.0-SNAPSHOT}. The exception message was: com.ibm.ws.container.service.state.StateChangeException: org.jboss.weld.exceptions.DeploymentException: WELD-001408: Unsatisfied dependencies for type String with qualifiers @ConfigProperty
  at injection point [BackedAnnotatedField] @Inject @ConfigProperty private no.klp.bpm.task.KOPSTask.endpoint2
  at no.klp.bpm.task.KOPSTask.endpoint2(KOPSTask.java:0)
注释如下所示:

@Inject
@ConfigProperty(name="rule.engine.host", defaultValue="ukjent!")
private String endpoint2;
这里可能有什么问题

/bwa

背景信息: 这是一个类加载器可见性问题,主要存在于将较旧的配置(如2017年之前)转入使用微文件的应用程序时。在Liberty中,API分为以下几类:

  • api
    (例如JavaSE api)
  • spec
    (例如JavaEE API)
  • IBMAPI
    (例如
    com.ibm.websphere.*
    api)
  • 第三方
    (例如来自JPA2.1特性的
    org.eclipse.persistence.*
    API)
默认情况下,
api、spec、ibm api
对应用程序可见,这意味着
第三方
不可见(因为第三方LIB可能会破坏更改,这将违反Liberty的零迁移策略)

然后,当微文件功能出现时,它们不适合上述任何API类别(不是普遍的标准,不足以被视为
spec
,但比
第三方
更稳定),因此我们推出了一种新的API类型可见性:

  • stable
    (例如
    org.eclipse.microfile.*
    API)
新的
stable
API类型现在默认启用,因此应用程序可以看到这些API

问题说明: 由于您的
apiTypeVisibility
硬编码为
spec、ibmapi、api、第三方
,这实际上排除了新的
stable
api类型,而微文件api被归为该类型。要解决此问题,可以指定:

<classloader apiTypeVisibility="spec, stable, ibm-api, api, third-party"/>
额外资源:

看起来您没有正确添加依赖项。你能发布你的pom.xml或gradle或ivy文件吗?嗯,依赖关系是正确的,但出于某种原因,这修复了server.xml中enterpriseApplication配置中的问题:你是否尝试过使用mpConfig-1.2在server.xml中启用该功能?现在,它可以正常工作了参见我9月11日的评论,这里有很多很棒的信息,即使如此,也很难知道api的区别
<!-- Read as: In addition to default values, also grant 'third-party' api type visibility -->
<classloader apiTypeVisibility="+third-party"/>