您可以在配置中使用變數,以免在不同環境中重複使用配置時,將可能會不適用的值寫在程式中。
關於這項作業
您可以在下列任何位置設定內容來定義變數:
- 在伺服器配置檔中,或在某個併入檔中
- 在 bootstrap.properties 檔中
如果在多處指定相同的變數,其優先順序如下:
- bootstrap.properties 中的變數會置換程序環境變數
- server.xml 或所併入 XML 檔中的變數,會置換 bootstrap.properties 中的變數和程序環境變數
最佳作法: 特定伺服器專用的變數(例如埠號)會指定在 bootstrap.properties 檔中,如此既可在多部伺服器之間共用 server.xml,又可在各伺服器中讓這些值保持不同。伺服器群組共用的變數,例如特定主機的資料庫配置,最好是指定在併入上層配置檔的 xml 檔中。
最佳作法: 變數名稱的開頭必須是英文字母,並且只能包含下列字元:英文字母、數值字元,以及 "_" 和 "." 字元。
程序
- 在配置檔中指定變數。
變數定義的語法是 variable_name=value。如果值含有路徑,在處理配置期間會以單一正斜線取代重複的正斜線和反斜線,來將該值正規化,但如果值的開頭是雙正斜線或雙反斜線,則維持不變。
最佳作法: 如果您需要將變數值設為包含重複的正斜線(有時用於 JDBC 驅動程式連線 URL),請在雙斜線處將值分成兩個部分。藉由以雙正斜線作為起始字元,來避免正規化。例如,如果要儲存值
"jdbc:db2://host_name.com",請使用兩個變數:
URL_PART_1="jdbc:db2:"
URL_PART_2="//host_name.com"
定義在配置檔中的變數是以使用它們的配置元素為範圍。比方說,下列程式碼片段建立一個稱為
updateTrigger_var 的變數,並且用於
applicationMonitor 配置元素中:
<applicationMonitor updateTrigger_var="mbean" />
如果要建立特定配置實例(例如應用程式或資源項目)所用的變數,您也必須指定實例 ID。
例如:<httpEndpoint
id="defaultHttpEndpoint" HTTP_default_var="8889" />
- 在 bootstrap.properties 檔中指定變數。
bootstrap.properties 檔中所定義的變數不以特定配置元素為範圍。您以鍵值組的形式來輸入這些變數。
例如:
HTTP_default_var=8006
- 在配置中使用已定義的變數。
變數替代語法是
${variable_name}。您可以指定
${variable_name1}${variable_name2},來連結多個變數值。比方說,如果要使用
HTTP_default_var 變數,請新增下列程式碼片段到配置檔中:
<httpEndpoint id="defaultHttpEndpoint"
httpPort="${HTTP_default_var}">
</httpEndpoint>
- 在配置中使用 variable 元素
您可以在伺服器配置中,利用
variable 元素來定義廣域範圍內的變數。
如果在併入檔內定義相同的變數,
server.xml 檔所定義的變數會置換它。
比方說,如果要使用
variable 元素,請新增下列程式碼片段到配置檔中:
<variable name="HTTP_default_var" value="8889" />
- 在配置中使用程序環境變數
如果您使用 env. 配置變數字首,就可以使用程序環境變數,例如:
<fileset dir="${env.LIBRARY_DIR}" includes="*.jar"/>
如需指定環境變數的相關資訊,請參閱自訂 Liberty 環境。
- 在配置中使用變數表示式
對於配置變數,您可以使用一個受限的變數表示式語法,格式是
${<operand><operator><operand>}。變數的說明如下:
- operand
- 運算元可以是長整數文字,或包含長整數值的變數名稱。變數名稱的開頭必須是英文字母,並且只能包含下列字元:英文字母、數值字元,以及 "_" 和 "." 字元。
- operator
- 可用的運算子如下:
- + 代表加號
- - 代表減號
- * 代表乘號
- / 代表除號
- 如果無法剖析表示式,會使用非整數值,或是發生算術錯誤,然後行為不明確。
比方說,如果定義 HTTP_port_base 變數,可能使用變數表示式來定義多個 httpEndpoint:
<httpEndpoint id="defaultHttpEndpoint" httpPort="${HTTP_port_base+0}"/>
<httpEndpoint id="httpEndpoint2" httpPort="${HTTP_port_base+1}"/>
- 置換配置中可繼承的屬性
您可以置換配置中的可繼承屬性的預設值。
Liberty 特性頁面中會列出可繼承的屬性。您可以尋找 Inherits 類型,來識別具有繼承屬性的元素。比方說,onError 屬性就是其中一個可繼承的屬性。
您可以在 bootstrap.properties 或 server.xml 檔中,利用 variable 元素來設定 onError 屬性,以在廣域範圍內定義這個屬性的變數名稱。
如果兩個檔案指定了相同的變數名稱,會使用 server.xml 檔中的變數。
如果這兩個檔案未明確設定這個屬性,就會使用預設值。
如果在可繼承的屬性中設定了無效值,屬性值會撤回到 bootstrap.properties 或 server.xml 檔中所定義的廣域值,如果廣域層次沒有定義這個值,就回撤回到預設值。
另一個範例是 Liberty 中的記載內容。請參閱 記載和追蹤。