5.2. 変数の置換

変数を使用してサーバー設定をパラメーター化できます。値への変数参照を解決するには、以下のソースを順番に参照します。

  1. server.xml ファイルのデフォルト変数値
  2. 環境変数
  3. bootstrap.properties
  4. Java システムプロパティー
  5. server.xml ファイルの設定
  6. コマンドラインで宣言された変数

変数は ${variableName} 構文を使用して参照されます。

以下の例のようにサーバー設定に変数を指定します。

<variable name="variableName" value="some.value" />

server.xml ファイルに指定されるデフォルト値は、他の値が指定されていない場合のみ使用されます。

<variable name="variableName" defaultValue="some.default.value" />

コマンドラインから、起動時に変数を指定することもできます。これを実行する場合、コマンドラインで指定された変数は、変数の他のソースをすべて上書きし、サーバーの起動後に変更することはできません。

環境変数には変数としてアクセスできます。バージョン 19.0.0.3 では、環境変数名を直接参照できます。変数が指定どおりに解決できない場合、server.xml ファイルは環境変数名に以下のバリエーションを検索します。

  • 英数字以外の文字をすべてアンダースコア(_)に置き換えます。
  • すべての文字を大文字に変更します。

たとえば、server.xml ファイルに ${my.env.var} を入力すると、以下のような名前で環境変数が検索されます。

  1. my.env.var
  2. my_env_var
  3. MY_ENV_VAR

バージョン 19.0.0.3 以前では、以下の例のように、環境変数名の先頭に env. を追加して環境変数にアクセスできます。

<httpEndpoint id="defaultHttpEndpoint"
              host="${env.HOST}"
              httpPort="9080" />

変数の値は、常に単純な型変換を持つ文字列として解釈されます。したがって、ポートのリスト(80、443 など は、2 つのポート番号ではなく単一文字列として解釈される可能性があります。以下の例のように list 関数を使用して 変数の置換を強制的に分割できます。

<mongo ports="${list(mongoPorts)}" hosts="${list(mongoHosts)}" />

Simple 演算は、整数値を持つ変数でサポートされます。演算子の左側と右辺は、変数または数字のいずれかになります。以下の例のように、演算子は +-*、または / のいずれかになります。

<variable name="one" value="1" />
<variable name="two" value="${one+1}" />
<variable name="three" value="${one+two}" />
<variable name="six" value="${two*three}" />
<variable name="five" value="${six-one}" />
<variable name="threeagain" value="${six/two}" />

事前定義された変数には多数あります。

  • wlp.install.dir: Open Liberty ランタイムがインストールされているディレクトリー。
  • wlp.server.name: サーバー名。
  • wlp.user.dir: usr フォルダーのディレクトリー。デフォルトは ${wlp.install.dir}/usr です。
  • shared.app.dir: 共有アプリケーションのディレクトリー。デフォルトは ${wlp.user.dir}/shared/apps です。
  • shared.config.dir: 共有設定ファイルのディレクトリー。デフォルトは ${wlp.user.dir}/shared/config です。
  • shared.resource.dir: 共有リソースファイルのディレクトリー。デフォルトは ${wlp.user.dir}/shared/resources です。
  • server.config.dir: サーバー設定が保存されるディレクトリー。デフォルトは ${wlp.user.dir}/servers/${wlp.server.name} です。
  • server.output.dir: サーバーが workarea、ログ、およびその他のランタイム生成ファイルを書き込むディレクトリー。デフォルトは ${server.config.dir} です。