[17.0.0.3 and later]

Liberty 运行时中的有效配置值位置

以下各节描述 Liberty 运行时中的有效配置值位置。

环境变量

当请求包括缺省源时,所有进程环境变量都将包括在 MicroProfile Config API 配置中。Liberty 向 Java™ System.getenv() 方法公开主机进程环境变量,此外还会添加来自服务器 server.env 文件的属性,这些属性随后又可供 MicroProfile Config API 使用。环境变量包括在优先级为序数 300 处。

通过使用操作系统环境变量,可将源自 Liberty server.env 的属性传递至 MicroProfile Config API 实现。从 server.env 只能获得在主机环境中具有有效环境变量名称的属性。例如,Linux 环境不支持环境变量名称中包含句点 (.),因此,诸如 user.name 之类的属性名称在 server.env 中不受支持。

系统属性

当请求包括缺省源时,所有通过 System.getProperties() 获得的 Java 系统属性都将包括在 MicroProfile Config API 配置中。Liberty 将来自服务器 bootstrap.properties 文件的属性添加至 Java 系统属性。系统属性包括在优先级为序数 400 处。

MicroProfile Config 文件位置

如果请求了添加缺省属性,那么 Microprofile Config API 将使用 Thread ContextClassLoader 或用户提供的 ClassLoader${CLASSPATH}/META-INF/microprofile-config.properties 文件装入属性。对于 Liberty 应用程序,META-INF 位置可能是 JAR 或 WAR 文件的根目录下的子目录,或者位于 EAR 文件的 lib 目录下的 JAR 中,或者位于服务器级别共享库 JAR 中。源自属性文件的属性值装入在优先级为序数 100 处。

Java ServiceLoader 装入的源

可以使用 MicroProfile 配置项目站点中记录的 API 以编程方式注册配置源。也可以使用 Java ServiceLoader 模式找到在运行时动态发现和装入的配置源对象。

配置值作用域

配置源是通过两种方式装入的:使用 loadResources() 方法通过 ClassLoader 代码装入,以及通过 Java ServiceLoader 模式装入。因此,配置值的作用域对 Liberty 中的 Java 类的作用域进行镜像。对于来自一个应用程序 WAR 文件的配置值,即使这些配置值是同一 EAR 应用程序组合件或服务器的一部分,通常在其他 WAR 文件中也无法对它们进行访问。通过将 ${CLASSPATH}/META-INF/microprofile-config.properties 放入 EAR 的 lib 目录下的 JAR 中,可在该 EAR 中共享配置。通过将配置值放入 server.env 文件中,或通过将 server.xml 文件中的 library 元素与需要使用公共配置值的应用程序的相应 commonLibrary 引用配合使用,可在 Liberty 服务器中共享配置值。


用于指示主题类型的图标 概念主题

文件名:twlp_microprofile_appconfig_validsources.html