構成ファイル内での include エレメントの使用
すべての構成を単一の server.xml ファイル内に保持できますが、include エレメントを使用することで、別々のファイルからの構成を統合して、最も有用な構造を作成することもできます。
このタスクについて
複合型の構成を簡単に維持できるようにするには、その構成を一連のファイル間で分割します。
以下に例を示します。
- ローカル・ホストに固有の変数を含むファイルを組み込んで、メイン構成を複数のホストで使用できるようにする場合。
- 特定のアプリケーション用の構成すべてを、そのアプリケーションそのものによってバージョン管理できる個別ファイルに保持する場合。
例
以下は、構成ファイルを組み込むための構文です。組み込みファイルが見つからないときにそれをスキップする場合は、
optional 属性を true として設定します。
<include optional="true" location="pathname/filename"/>
or
<include optional="true" location="url"/>
以下のリストに、ロケーションとして考えられるものを示します。ロケーションは、表示された順序で検索されます。
- 親ファイルに相対的に指定されたロケーション
- サーバー構成ディレクトリー
- 絶対パスとして指定されたロケーション
- Web サーバー
組み込み構成が予想どおりに確実に動作するようにするには、組み込み構成ファイルの以下の処理ルールを認識しておく必要があります。
- ロギングやアプリケーション・モニターなどの singleton サービスの場合、エントリーはファイル内に表示された順序で処理され、その後のエントリーは、前のエントリーに追加されるか、または前のエントリーをオーバーライドします。 これは、例えば、アプリケーションまたはデータ・ソースなど、ID が同じ構成インスタンスについても当てはまります。
- 組み込みステートメントは、<server /> エレメント内であればどの場所でも配置できます。
- 各組み込みファイルには、親構成ファイル内の <server /> エレメントと一致するエレメントが含まれていなければなりません。
- 組み込みファイルは他の組み込みファイルをネストすることができます。
- 各組み込みファイルは、親ファイル内の <include /> ステートメントが出現する位置にあるメイン構成に論理的にマージされます。
以下の例では、1 次サーバー構成ファイル server.xml には、 共有構成ディレクトリーにある blogDS.xml 構成ファイルの内容が組み込まれています。blogDS.xml ファイルには、データ・ソース定義が含まれています。この定義は、別個の構成ファイルに入れられ、いくつかの異なる server.xml ファイルに組み込んで、複数のサーバー・インスタンスにまたがって使用できるようになっています。
server.xml ファイルのコード例を以下に示します。
<server>
<featureManager>
<feature>servlet-3.0</feature>
<feature>jdbc-4.0</feature>
</featureManager>
<application id="blog" location="blog.war" name="blog" type="war"/>
<include optional="true" location="${shared.config.dir}/blogDS.xml"/>
</server>
blogDS.xml ファイルのコード例を以下に示します。
<server>
<dataSource id="blogDS" jndiName="jdbc/blogDS" jdbcDriverRef="derbyEmbedded">
<properties createDatabase="create" databaseName="C:/liberty/basics/derby/data/blogDB" />
</dataSource>
<jdbcDriver id="derbyEmbedded"/>
<library>
<fileset dir="C:/liberty/basics/derby" includes="derby.jar" />
</library>
</jdbcDriver>
</server>