![[17.0.0.3 以及更新版本]](../ng_v17003plus.gif)
Liberty 執行時期中有效的配置值位置
下列各節說明 Liberty 執行時期中的有效配置值位置。
環境變數
當需要包含預設來源時,「MicroProfile 配置 API」會包含所有的程序環境變數。Liberty 會顯露主機程序環境變數給 Java™ System.getenv() 方法,還會新增伺服器 server.env 檔中的內容,繼而之後提供給「MicroProfile 配置 API」使用。會包含環境變數,且其優先順序為序數 300。
來自 Liberty server.env 的內容會透過作業系統環境變數,傳遞給「MicroProfile 配置 API」實作。來自 server.env 的內容必須具有主機環境中的有效環境變數名稱。比方說,Linux 環境在環境變數名稱中不支援句點 (.),因此 server.env 中不支援 user.name 等之類的內容名稱。
系統內容
當需要包含預設來源時,「MicroProfile 配置 API」配置中會包含藉由 System.getProperties() 提供的所有「Java 系統內容」。Liberty 會將伺服器 bootstrap.properties 檔中的內容,新增至 「Java 系統內容」。會包含「系統內容」,且其優先順序為序數 400。
「MicroProfile 配置」的檔案位置
如果需要新增預設內容,「MicroProfile 配置 API」會使用執行緒 ContextClassLoader 或使用者提供的 ClassLoader,從 ${CLASSPATH}/META-INF/microprofile-config.properties 檔載入內容。對於 Liberty 應用程式,META-INF 位置可能一個子目錄,它位於 JAR 或 WAR 檔的根目錄,或 EAR 檔 lib 目錄的 JAR 中,或伺服器層次共用程式庫 JAR 中。會載入來自內容檔的內容值,且其優先順序為序數 100。
Java ServiceLoader 載入來源
可以利用 MicroProfile 配置專案網站所記載的 API,以程式設計方式來登錄配置來源。也可以使用 Java ServiceLoader 型樣,來尋找在執行時期動態探索和載入的配置來源物件。
配置值範圍
配置來源是藉由 ClassLoader 程式碼(利用 loadResources() 方法)或 Java ServiceLoader 型樣來載入。因此配置值的範圍會鏡映 Liberty 內之 Java 類別的範圍。來自某個應用程式 WAR 檔內的配置值,通常無法在其他 WAR 檔中存取,即使這些配置值是相同 EAR 應用程式組合或伺服器的一部分也一樣。配置可以跨 EAR 共用,作法是在 EAR lib 目錄的 JAR 中放置 ${CLASSPATH}/META-INF/microprofile-config.properties。配置值可以跨 Liberty 伺服器共用,作法是將它們放在 server.env 檔中,或是在 server.xml 檔中使用 library 元素,且對於需要使用共用配置值的應用程式,有對應的 commonLibrary 參照。