複数の Java EE アプリケーション間でのライブラリーの共有

ライブラリーは、複数の Java™ EE アプリケーション間で共有できます。 すべてのアプリケーションで実行時に同じクラスを使用するか、各アプリケーションで同じロケーションからロードされたクラスの別個のコピーを独自に使用することができます。

Open Liberty Liberty のクラス・ローダー構成に関する最新資料は、 Open Liberty Web サイトから入手できます。

このタスクについて

以下の例では、Alexandria というライブラリーは、次の 2 つのファイルで構成されています。
  • alexandria-scrolls.jarおよび
  • commons-lang.jar
Scholar というアプリケーションおよび Student というアプリケーションが、Academy というサーバー上で実行されており、このライブラリーに対するアクセス権限を両方のアプリケーションが必要としています。

手順

  1. ${WLP_USER_DIR} ディレクトリーの下の servers/Academy ディレクトリーに mylib/Alexandria ディレクトリーを作成します。

    例: wlp/usr/servers/Academy/mylib/Alexandria

  2. alexandria-scrolls.jar ファイルと commons-lang.jar ファイルを新規フォルダーにコピーします。
  3. Alexandria ライブラリーがロードされるように、アプリケーションのクラス・ロードを構成します。
    server.xml ファイルまたは組み込みファイルで、以下のコードを追加して、ライブラリーを定義します。
    <library id="Alexandria">
      <fileset dir="${server.config.dir}/mylib/Alexandria" includes="*.jar" scanInterval="5s" />
    </library>
    注: <library> エレメントは、 <fileset> エレメント ID のコンマ区切りリストを使用して filesetRef 属性を取ることもできます。
  4. 両方のアプリケーションがライブラリーの単一コピーを共有するように、アプリケーションからライブラリーを参照します。
    server.xml ファイルまたは組み込みファイルで、以下のコードを追加します。
    <application id="scholar" name="Scholar" type="ear" location="scholar.ear">
      <classloader commonLibraryRef="Alexandria" />
    </application>
    
    <application id="student" name="Student" type="ear" location="student.ear">
      <classloader commonLibraryRef="Alexandria" />
    </application>
    注: <commonLibraryRef> エレメントは、ライブラリー ID のコンマ区切りリストを取ることができます。
  5. オプション: 同じ JAR ファイルからロードされた独自のクラス・セットを持つように別のアプリケーションを構成します。
    例えば、Spy という別のアプリケーションで独自のクラスのコピーが必要な場合は、ディスク上の同じ物理ファイルを使用できます。 server.xml ファイルまたは組み込みファイルで、以下のコードを追加します。
    <application id="spy" name="Spy" type="war" location="spy.war">
      <classloader privateLibraryRef="Alexandria" />
    </application>
    注: <privateLibraryRef> エレメントは、ライブラリー ID のコンマ区切りリストを取ることができます。