はじめに
IBM WebSphere LibertyまたはOpen Liberty(以下Libertyと表記)では、server.xmlというサーバー構成ファイルを記述することで、利用するJava EE(Jakarta EE)のフィーチャーを選択的に指定したり、データソースや共有ライブラリー、セキュリティー設定などを定義します。これらの記述項目の中には開発環境/テスト環境では本番環境と異なる値を指定する必要があるものもあります。例えばデータソース定義に指定するデータベース・サーバーのホスト名は、開発環境/テスト環境ではそれぞれの環境用のデータベースを使うので異なるホスト名を指定するでしょう。
このような場合に、本番用のserver.xmlファイルを修正することなく設定値をオーバーライドすることができるので、その方法を紹介します。
Libertyサーバー構成情報の定義階層
server.xmlを含むLibertyサーバーの構成情報は以下の3箇所から、この順番で読み込まれます。
- ${server.config.dir}/configDropins/defaults/
- ${server.config.dir}/server.xml
- ${server.config.dir}/configDropins/overrides/
2番目のserver.xmlは必須で、1番目のdefaultsディレクトリーと3番目のoverridesディレクトリーはオプションです。defaultsディレクトリーとoverridesディレクトリーには複数のXMLファイルを配置できます(各ディレクトリー内のファイルはファイル名を小文字に変換してソートしたうえで順に読み込まれます)。defaultsディレクトリーには、複数のLibertyサーバーに共通のデフォルト定義情報を記述したXMLファイルを配置します。overrideディレクトリーがオーバーライド用定義ファイルの配置場所で、当該フォルダーに追加/上書き用の定義情報を記述したXMLファイルを配置することで、1番目+2番目(server.xml)の定義情報をオーバーライドできます。
以下は、${server.config.dir}がwlp/usr/servers/defaultServer
の場合のイメージです。
wlp
|
+---usr
|
+---servers
|
+---defaultServer
| server.xml
|
+---configDropins
|
+---defaults
| ここにデフォルトを記述したファイルを配置
+---overrides
ここにオーバーライドする定義情報を記述したファイルを配置
server.xmlのオーバーライドの方法
server.xmlをオーバーライドする部分を記述したXMLファイルを作成し、${server.config.dir}/configDropins/overrides/
に配置します。以下はDataSourceをオーバーライドする例です。ファイル名はoverride.xmlとしましたが何でも構いません。
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<server description="new server">
<dataSource id="SampleDataSource" jndiName="jdbc/db2/SAMPLE">
<jdbcDriver libraryRef="DB2JCCLib"/>
<properties.db2.jcc databaseName="SAMPLE" serverName="localhost" portNumber="25000"
currentSchema="DB2ADMIN" user="db2admin" password="password" />
</dataSource>
</server>