すべての Java EE アプリケーションのグローバル・ライブラリーの提供

あらゆる Java™ EEアプリケーションで利用できるグローバルライブラリを提供することができます。 これを行うには、対象ライブラリーの JAR ファイルをグローバル・ライブラリー・ディレクトリーに配置してから、各アプリケーションのクラス・ローダー構成でグローバル・ライブラリーの使用を指定します。 ただし、これらのグローバル・ライブラリーを、他のアプリケーション (OSGi アプリケーションなど) で使用することはできません。

Open Liberty ウェブサイトOpen Liberty に関する Liberty クラスローダーの設定に関する最新のドキュメントは、で公開されています。

このタスクについて

環境変数 WLP_USER_DIR で指定されたユーザー・ディレクトリーの下に、グローバル・ライブラリーを配置できる以下のロケーションがあります。
  • ${shared.config.dir}/lib/global
  • ${server.config.dir}/lib/global
アプリケーションの開始時にこれらのロケーションにファイルが存在し、そのアプリケーションで <classloader> エレメントが構成されていない場合は、アプリケーションはこれらのライブラリーを使用します。 クラス・ローダー構成が存在する場合は、グローバル・ライブラリーが明示的に参照されていない限り、これらのライブラリーは使用されません。
重要: グローバル・ライブラリーを使用する場合は、アプリケーションごとに <classloader> エレメントも構成することをお勧めします。 サーブレット仕様では、アプリケーションは、クラス・ローダー親チェーンでグローバル・ライブラリー・クラス・ローダーを共有する必要があります。 このため、各アプリケーションのクラス・ローダーの分離が行われません (そうでない場合は分離されます)。 したがって、アプリケーションは、 Liberty で読み込まれたクラスや、他のアプリケーションに対して長期的な影響を及ぼす可能性が高く、特に稼働中のサーバーから機能が追加・削除されるにつれて、アプリケーション間でクラス空間の一貫性に関する問題が発生しやすくなります。 これらの考慮事項はいずれも、構成で <classloader> エレメントを指定したアプリケーションには、この分離が維持されるため、適用されません。

以下の例では、Scholar というアプリケーションが、Alexandria という共通ライブラリーを使用し、またグローバル・ライブラリーを使用するように構成されています。

server.xml ファイルまたは組み込みファイルで、以下のコードを追加して、アプリケーションでグローバル・ライブラリーを使用可能にします。
<application id="" name="Scholar" type="ear" location="scholar.ear">
  <classloader commonLibraryRef="Alexandria, global" />
</application>
グローバル・ライブラリーの設定は、特殊 ID global を使用して library エレメントとして明示的に構成できます。 例:
<library id="global">
  <fileset dir="/path/to/folder" includes="*.jar" />
</library>