WebLogic Server アプリケーションの開発

     前  次    新しいウィンドウで目次を開く   
ここから内容の開始

共有 Java EE ライブラリおよびオプション パッケージの作成

以下の節では、共有 Java EE ライブラリとオプション パッケージを使用してアプリケーション間でコンポーネントとクラスを共有する方法について説明します。

 


共有 Java EE ライブラリおよびオプション パッケージの概要

WebLogic Server の共有 Java EE ライブラリ機能では、複数のエンタープライズ アプリケーション間で、1 つまたは複数の種類の Java EE モジュールを簡単に共有できます。共有 Java EE ライブラリは、デプロイメントに際して Java EE アプリケーション コンテナに登録される 1 つまたは複数のモジュールです。共有 Java EE ライブラリは以下のいずれかです。

共有 Java EE ライブラリを適切なアーカイブ ファイル (EAR、JAR、または WAR) にパッケージ化することをお勧めします。ただし、開発目的の場合、展開されたアーカイブ ディレクトリとして共有 Java EE ライブラリをデプロイすれば、更新と再デプロイメントの繰り返しを簡単にすることができます。

共有 Java EE ライブラリを登録後、そのライブラリを参照するエンタープライズ アプリケーションをデプロイできます。参照側の各アプリケーションは、デプロイメントの際に必要なライブラリへの参照を受け取り、参照側アプリケーション自体の一部としてパッケージ化されているかのように、ライブラリを構成するモジュールを使用できます。参照側アプリケーションのクラスパスにライブラリ クラスが追加され、参照側アプリケーションのデプロイメント記述子は、共有 Java EE ライブラリを構成するモジュールのデプロイメント記述子と (メモリ内で) 結合されます。

このトピックでは、大部分において、エンタープライズ アプリケーションでのみ参照可能な共有 Java EE ライブラリについて説明しています。ただし、別の Web アプリケーションでのみ参照可能なライブラリを作成することもできます。このライブラリの機能はアプリケーション ライブラリと非常に似ていますが、参照方法が多少異なります。詳細については、「Web アプリケーション共有 Java EE ライブラリの情報」を参照してください。

注意 : WebLogic Server では、ドメイン ディレクトリの lib サブディレクトリを使用して、WebLogic Server システム クラスパスに 1 つまたは複数の JAR ファイルを追加するという簡単な方法も利用できます。「システム クラスパスへの JAR の追加」を参照してください。

オプション パッケージ

WebLogic Server は、Java EE 5.0 仕様の節 8.2「Optional Package Support」に記載のとおり、オプション パッケージをサポートしています。バージョニングについては、「Optional Package Versioning」で説明しています。オプション パッケージは、Java EE ライブラリと似た機能を提供しており、これを使用すると複数のアプリケーション間で単一の JAR ファイルを簡単に共有できます。Java EE ライブラリの場合、最初に、関連する JAR ファイルをオプション パッケージとしてデプロイし、WebLogic Server にオプション パッケージを登録する必要があります。パッケージを登録したら、そのマニフェスト ファイルでパッケージを参照する Java EE モジュールをデプロイできます。

オプション パッケージは、weblogic.BuildXMLGen で Java EE 共有ライブラリとしてもサポートされます。そのため、オプション パッケージ参照の検索では、アプリケーションおよびそのモジュールのすべてのマニフェストがスキャンされます。オプション パッケージ参照が見つかると、生成された build.xml ファイル内の wlcompile および appc タスクに追加されます。

オプション パッケージは、どの Java EE モジュール (EAR、JAR、WAR、または RAR アーカイブ) または展開されたアーカイブ ディレクトリからでも参照できる点が Java EE ライブラリとは異なります。Java EE ライブラリは、有効なエンタープライズ アプリケーションからのみ参照できます。

たとえば、複数の Web アプリケーションで必要とされるサード パーティの Web アプリケーション フレームワーク クラスを、単一の JAR ファイル内にパッケージ化およびデプロイし、ドメイン内の複数の Web アプリケーション モジュールから参照することが可能です。この場合、個々の Web アプリケーション モジュールは共有 JAR ファイルを参照する必要があるので、Java EE ライブラリではなくオプション パッケージを使用します (Java EE ライブラリの場合、完全なエンタープライズ アプリケーションのみがライブラリを参照できます)。

注意 : Oracle のドキュメントと WebLogic Server ユーティリティでは、「ライブラリ」という語を Java EE ライブラリとオプション パッケージの両方の意味で使用します。必要な場合にのみオプション パッケージと呼びます。

ライブラリ ディレクトリ

Java EE プラットフォームには、アプリケーションでオプション パッケージや共有ライブラリを使用するためのいくつかのメカニズムが用意されています。ライブラリはアプリケーションにバンドルすることもできますし、アプリケーションで使用するために個別にインストールすることもできます。EAR ファイルには、JAR ファイルにパッケージ化されたライブラリを格納するディレクトリを含めることができます。このディレクトリの名前は、EAR ファイルのデプロイメント記述子の library-directory 要素内に指定されます。library-directory が指定されていない場合、または EAR ファイルにデプロイメント記述子が含まれていない場合は、lib というディレクトリが使用されます。ライブラリ ディレクトリが存在しないことを指定するには、空の library-directory 要素を使用します。このディレクトリ (サブディレクトリは除く) 内にある、拡張子 .jar が付いたファイルはすべて、アプリケーション クライアントを含む EAR ファイル内にパッケージ化されているすべてのコンポーネントで利用可能とする必要があります。これらのライブラリは、アプリケーションにバンドルされている他のライブラリ、または別個にインストールされている他のライブラリを参照できます。

この機能は、WebLogic Server でサポートされている APP-INF/lib 機能に似ています。APP-INF/liblibrary-directory が両方とも存在する場合は、library-directory 内の jar が優先されます。つまり、これらのファイルが、クラスパス内の APP-INF/lib jar ファイルよりも前に置かれます。APP-INF/lib の詳細については、「モジュールおよびアプリケーション間のクラス参照の解決」および「分割開発ディレクトリでの共有クラスの配置」を参照してください。

ライブラリのバージョニングのサポート

WebLogic Server では、共有 Java EE ライブラリのバージョニングによって、参照側のアプリケーションは、使用するライブラリの最低限のバージョンを指定したり、必要なバージョンを完全一致の形で指定したりできます。WebLogic Server では、共有 Java EE ライブラリのバージョニングを、「Optional Package Versioning」の説明にある 2 種類のレベルでサポートしています。

ベスト プラクティスとして、共有 Java EE ライブラリを作成する際には、バージョン情報 (実装バージョンまたは実装バージョンと仕様バージョンの両方) を必ず含めることをお勧めします。共有コンポーネントの開発時にバージョン情報を作成および更新すると、テスト目的でコンポーネントの複数のバージョンを同時にデプロイできます。バージョン情報を指定しない場合、またはバージョン文字列のインクリメントに失敗した場合は、新しいライブラリをデプロイする前に既存のライブラリをアンデプロイする必要があります。「共有 Java EE ライブラリおよびそれに依存するアプリケーションのデプロイ」を参照してください。

参照側アプリケーションのバージョニング情報によって、そのアプリケーションで必要なライブラリとパッケージのバージョンが決まります。各アプリケーションに応じて、必要となるライブラリまたはパッケージのバージョンが異なる場合があります。たとえば、プロダクション アプリケーションがある特定のバージョンのライブラリを要求することがあります。これはそのライブラリのみがプロダクション用に完全に適しているためです。同じライブラリの最低限のバージョンを常に使用するように内部アプリケーションをコンフィグレーションできます。特定のバージョンを必要としないアプリケーションで、最新バージョンのライブラリを使用するようにコンフィグレーションすることもできます。「エンタープライズ アプリケーションでの共有 Java EE ライブラリの参照」を参照してください。

共有 Java EE ライブラリとオプション パッケージの比較

オプション パッケージと共有 Java EE ライブラリでは、以下の機能が共通しています。

オプション パッケージは、共有 Java EE ライブラリと以下の点が異なっています。

通常、1 つまたは複数の EJB、Web アプリケーション、またはエンタープライズ アプリケーションを複数のエンタープライズ アプリケーション間で共有する場合は、共有 Java EE ライブラリを使用します。1 つまたは複数の (JAR ファイルにパッケージ化された) クラスを複数の Java EE モジュール間で共有する場合は、オプション パッケージを使用します。

プレーン JAR ファイルは、ライブラリとしてもオプション パッケージとしても共有できます。以下の場合には、オプション パッケージを使用します。

1 つまたは複数のエンタープライズ アプリケーションから JAR ファイルを参照するだけで、Java EE 仕様に厳密に準拠する必要がない場合は、共有 Java EE ライブラリを使用してプレーン JAR ファイルを共有します。

注意 : Oracle のドキュメントと WebLogic Server ユーティリティでは、「共有 Java EE ライブラリ」という語をライブラリとオプション パッケージの両方の意味で使用します。必要な場合にのみオプション パッケージと呼びます。

補足情報

管理者側から見た共有 Java EE ライブラリ、オプション パッケージ、および参照側アプリケーションのデプロイおよび管理の詳細については、『WebLogic Server アプリケーションのデプロイメント』の「共有 Java EE ライブラリおよびそれに依存するアプリケーションのデプロイ」を参照してください。

 


共有 Java EE ライブラリの作成

複数のアプリケーションで共有可能な新しい共有 Java EE ライブラリを作成するには、次の手順に従います。

  1. 有効かつデプロイ可能な Java EE モジュールまたはエンタープライズ アプリケーションに共有 Java EE ライブラリを作成します。ライブラリは、Java EE モジュールまたはエンタープライズ アプリケーションで必要な Java EE デプロイメント記述子を持つ必要があります。
  2. 共有 Java EE ライブラリ ファイルの作成」を参照してください。

  3. オプション パッケージ クラスを作業ディレクトリに作成します。
  4. オプション パッケージ クラス ファイルの作成」を参照してください。

  5. 共有 Java EE ライブラリの MANIFEST.MF ファイルを作成および編集して、名前およびバージョン文字列情報を指定します。
  6. 共有 Java EE ライブラリのマニフェスト属性の編集」を参照してください。

  7. 配布およびデプロイメント用共有 Java EE ライブラリをパッケージ化します。
  8. 配布およびデプロイメント用共有 Java EE ライブラリのパッケージ化」を参照してください。

共有 Java EE ライブラリ ファイルの作成

以下の種類の Java EE モジュールを共有 Java EE ライブラリとしてデプロイできます。

共有 Java EE ライブラリには以下の制限があります。

共有 Java EE ライブラリを、スタンドアロン Java EE モジュールではなく、エンタープライズ アプリケーションとしてパッケージ化することをお勧めします。これは、スタンドアロン モジュールの URI がデプロイメント名から派生しており、モジュールがどのようにデプロイされたかによって変わる可能性があるためです。デフォルトでは、WebLogic Server はデプロイメント アーカイブ ファイル名または展開されたアーカイブ ディレクトリ名をデプロイメント名として使用します。別のファイルまたは場所からスタンドアロン共有 Java EE ライブラリを再デプロイする場合、デプロイメント名と URI も変わり、誤った URI を使用している参照側アプリケーションは、デプロイされたライブラリにアクセスできません。

スタンドアロン Java EE モジュールとして共有 Java EE ライブラリをデプロイする場合は、デプロイメント時に既知のデプロイメント名を必ず指定し、参照側アプリケーションでその名前を URI として使用します。

オプション パッケージ クラス ファイルの作成

任意のクラスのセットをオプション パッケージ ファイルにまとめることができます。共有クラスのコレクションは、最終的に標準 JAR アーカイブにパッケージ化されます。ただし、JAR のマニフェスト ファイルを編集する必要があるので、最初にすべてのクラス ファイルを作業ディレクトリに作成します。

  1. 新しいオプション パッケージ用の作業ディレクトリを作成します。次に例を示します。
  2. mkdir /apps/myOptPkg
  3. 必要に応じて適切なパッケージ サブディレクトリを作成して、コンパイルしたクラス ファイルを作業ディレクトリにコピーします。次に例を示します。
  4. mkdir -p /apps/myOptPkg/org/myorg/myProduct
    cp /build/classes/myOptPkg/org/myOrg/myProduct/*.class /apps/myOptPkg/org/myOrg/myProduct
  5. オプション パッケージとして使用する JAR ファイルがすでにある場合、その内容を作業ディレクトリに展開して、マニフェスト ファイルを編集できるようにします。
  6. cd /apps/myOptPkg
    jar xvf /build/libraries/myLib.jar

共有 Java EE ライブラリのマニフェスト属性の編集

共有 Java EE ライブラリの名前とバージョン情報は、META-INF/MANIFEST.MF ファイルで指定します。表 9-1 では、有効な共有 Java EE ライブラリ マニフェストの属性を示します。

表 9-1 Java EE ライブラリのマニフェスト属性
属性
説明
Extension-Name
共有 Java EE ライブラリの名前を識別する文字列値 (省略可能)。アプリケーションの参照では、Extension-Name 値に完全一致したライブラリを使用する必要がある。
ベスト プラクティスは、ライブラリごとに Extension-Name 値を必ず指定すること。拡張名を指定しない場合は、ライブラリのデプロイメント名から派生した名前を使用する。デフォルトのデプロイメント名は、アーカイブ デプロイメントと展開されたアーカイブ デプロイメントでは異なる。デプロイメント コマンドで任意の値に設定できる。
Specification-Version
共有 Java EE ライブラリの仕様バージョンを定義する文字列値 (省略可能)。アプリケーションの参照では、ライブラリで要求されている Specification-Version を必要に応じて指定できる。完全一致の仕様バージョンを使用できない場合、参照側アプリケーションのデプロイメントは失敗する。
Specification-Version は、次のフォーマットを使用する。

バージョン番号および改訂番号をピリオドで区切ったメジャー/マイナー バージョン フォーマット (「9.0.1.1」など)

特定の共有 Java EE ライブラリを完全一致の形で示すバージョン、最低限のバージョン、使用可能な最新バージョンのいずれかを要求するようにアプリケーションの参照をコンフィグレーションできる。
共有 Java EE ライブラリの仕様バージョンは、一部制約があるものの、ライブラリのデプロイ時にコマンドラインでも設定できる。「共有 Java EE ライブラリおよびそれに依存するアプリケーションのデプロイ」を参照。
Implementation-Version
共有 Java EE ライブラリのコード実装バージョンを定義する文字列値 (省略可能)。Implementation-Version は、Specification-Version が定義済みの場合にのみ指定できる。
Implementation-Version は、次のフォーマットを使用する。
  • バージョン番号および改訂番号をピリオドで区切ったメジャー/マイナー バージョン フォーマット (「9.0.1.1」など)
  • テキストによる名前付きバージョンのフォーマット (「9011Beta」または「9.0.1.1.B」など)
メジャー/マイナー バージョン フォーマットを使用する場合、特定の共有 Java EE ライブラリを完全一致の形で示すバージョン、最低限のバージョン、使用可能な最新バージョンのいずれかを要求するようにアプリケーションの参照をコンフィグレーションできる。テキスト フォーマットを使用する場合、アプリケーションの参照では、ライブラリのバージョンを完全一致の形で指定する必要がある。
共有 Java EE ライブラリの実装バージョンは、一部制約があるものの、ライブラリのデプロイ時にコマンドラインでも設定できる。「共有 Java EE ライブラリおよびそれに依存するアプリケーションのデプロイ」を参照。

マニフェスト ファイルの属性を指定するには、次の手順に従います。

  1. テキスト エディタでマニフェスト ファイルを開くか作成します。サンプルの共有 Java EE ライブラリの場合、次のコマンドを使用します。
  2. cd /apps/myLibrary
    mkdir META-INF
    emacs META-INF/MANIFEST.MF

    次に、オプション パッケージの場合の例を示します。

    cd /apps/myOptPkg
    mkdir META-INF
    emacs META-INF/MANIFEST.MF
  3. テキスト エディタで、共有 Java EE ライブラリの名前を指定する文字列値を追加します。次に例を示します。
  4. Extension-Name: myExtension

    ライブラリを参照するアプリケーションは、Extension-Name 値に完全一致した共有ファイルを指定する必要があります。

  5. ベスト プラクティスとして、共有 Java EE ライブラリのバージョン情報 (省略可能) を入力します。次に例を示します。
  6. Extension-Name: myExtension
    Specification-Version: 2.0
    Implementation-Version: 9.0.0

    バージョン識別子に対してメジャー/マイナー フォーマットを使用すると、別のアプリケーションからライブラリを参照する際に最も柔軟な指定が可能です (表 9-1 を参照)。

    注意 : デプロイ時に必要に応じてコマンドラインで Specification-Version および Implementation-Version を指定できますが、これらの文字列を MANIFEST.MF ファイルで指定しておくことをお勧めします。マニフェストにバージョン文字列を指定すると、旧バージョンと並行して新しいバージョンのライブラリをデプロイできるようになります。「共有 Java EE ライブラリおよびそれに依存するアプリケーションのデプロイ」を参照してください。

配布およびデプロイメント用共有 Java EE ライブラリのパッケージ化

管理者によるデプロイメント用に共有 Java EE ライブラリまたはオプション パッケージを配布する場合、デプロイメント ファイルをアーカイブ ファイル (共有 Java EE ライブラリの場合は .EAR ファイルまたはスタンドアロン モジュール アーカイブ ファイル、オプション パッケージの場合は単純な .JAR ファイル) にパッケージ化して配布します。「分割開発ディレクトリからのデプロイメントとパッケージ化」を参照してください。

共有 Java EE ライブラリは標準 Java EE アプリケーションまたはスタンドアロン モジュールとしてパッケージ化されるので、『WebLogic Server アプリケーションのデプロイメント』で説明されているように、ライブラリのデプロイメント コンフィグレーションをデプロイメント プランにエクスポートすることもできます。オプション パッケージ .JAR ファイルにはデプロイメント記述子が含まれていないので、エクスポートすることはできません。

開発目的で、展開されたアーカイブ ディレクトリとしてライブラリをデプロイすると、更新と再デプロイメントの繰り返しが簡単になります。

 


エンタープライズ アプリケーションでの共有 Java EE ライブラリの参照

Java EE アプリケーションは、アプリケーションの weblogic-application.xml デプロイメント記述子のエントリを基に、登録された共有 Java EE ライブラリを参照できます。表 9-2 では、ライブラリ参照を定義する XML 要素を示します。

表 9-2 weblogic-application.xml の共有 Java EE ライブラリ参照用の要素
要素
説明
library-ref
library-ref は、共有 Java EE ライブラリへの参照を定義する親要素。他のすべての要素は library-ref 内に格納される。
library-name
使用する共有 Java EE ライブラリの名前を指定する文字列値 (必須)。library-name は、ライブラリのマニフェスト ファイルの Extension-Name 属性の値に完全に一致する必要がある (表 9-4 を参照)。
specification-version
共有 Java EE ライブラリの必要な仕様バージョンを定義する文字列値 (省略可能)。この要素を設定しなかった場合、アプリケーションは、最新の仕様バージョンに一致するライブラリを使用する。メジャー/マイナー バージョン フォーマットで文字列値を指定した場合、アプリケーションは、コンフィグレーションした値を下回らない最新の仕様バージョンに一致するライブラリを使用する。使用可能なすべてのライブラリが、コンフィグレーションされた specification-version よりも古い場合、アプリケーションをデプロイすることはできない。下記の exact-match 要素を使用すると、必要なバージョンをさらに絞り込むことができる。
メジャー/マイナー バージョニング規約に従っていない文字列値 (9.2BETA など) を指定した場合、アプリケーションでは、ライブラリのマニフェスト ファイルの Specification-Version 属性に完全一致する文字列値を持つ共有 Java EE ライブラリが必要になる (表 9-4 を参照)。
implementation-version
共有 Java EE ライブラリの必要な実装バージョンを指定する文字列値 (省略可能)。この要素を設定しなかった場合、アプリケーションは、最新の実装バージョンに一致するライブラリを使用する。メジャー/マイナー バージョン フォーマットで文字列値を指定した場合、アプリケーションは、コンフィグレーションした値を下回らない最新の実装バージョンに一致するライブラリを使用する。使用可能なすべてのライブラリが、コンフィグレーションされた implementation-version よりも古い場合、アプリケーションをデプロイすることはできない。下記の exact-match 要素を使用すると、必要な実装バージョンをさらに絞り込むことができる。
メジャー/マイナー バージョニング規約に従っていない文字列値 (9.2BETA など) を指定した場合、アプリケーションでは、ライブラリのマニフェスト ファイルの Implementation-Version 属性に完全一致する文字列値を持つ共有 Java EE ライブラリが必要になる (表 9-4 を参照)。
exact-match
コンフィグレーションされた値よりも新しい仕様または実装バージョンを持つ共有 Java EE ライブラリがある場合、それをアプリケーションで使用するかどうかを指定するブール値 (省略可能)。デフォルトでは、この要素は false。つまり、WebLogic Server は、最新バージョンのライブラリがある場合は、それを使用する。この要素を true に設定すると、specification-version 要素と implementation-version 要素に完全一致するバージョンが必要になる。
context-root
Web アプリケーション共有 Java EE ライブラリで使用する代替コンテキスト ルートを指定する文字列値 (省略可能)。この要素は、ライブラリのコンテキスト ルートが、参照側 Java EE アプリケーションの Web アプリケーションのコンテキスト ルートと衝突する場合に指定する。
「Web アプリケーション共有 Java EE ライブラリ」は特殊なライブラリで、別の Web アプリケーションで参照される Web アプリケーションのこと。Web アプリケーション共有 Java EE ライブラリの情報」を参照。

たとえば、次の weblogic-application.xml 記述子の単純なエントリでは、共有 Java EE ライブラリ myLibrary を参照します。

<library-ref>
   <library-name>myLibrary</library-name>
</library-ref>

上記の例では、WebLogic Server は、依存関係にあるアプリケーションをデプロイする際に myLibrary というライブラリを探します。myLibrary のコピーが複数登録されている場合、WebLogic Server は、最新の仕様バージョンのライブラリを選択します。選択した仕様バージョンを複数のライブラリのコピーが使用している場合、WebLogic Server は、最新の実装バージョンのコピーを選択します。

次の例では、仕様バージョンの要件を指定して共有 Java EE ライブラリを参照します。

<library-ref>
   <library-name>myLibrary</library-name>
   <specification-version>2.0</specification-version>
</library-ref>

上記の例では、WebLogic Server は、仕様バージョン 2.0 以降のライブラリを探します。バージョン 2.0 以降のライブラリが複数ある場合、WebLogic Server は、実装バージョンに Float 値を使用しているライブラリを調べ、最新バージョンを選び出します。WebLogic Server は、実装バージョンに Float 以外の値を使用している選択ライブラリを無視します。

次の例では、仕様バージョンと非 Float 値の実装バージョンの両方を指定して共有 Java EE ライブラリを参照します。

<library-ref>
   <library-name>myLibrary</library-name>
   <specification-version>2.0</specification-version>
   <implementation-version>81Beta</implementation-version>
</library-ref>

上記の例では、WebLogic Server は、仕様バージョンが 2.0 以降で、実装バージョンが 81Beta に完全一致するライブラリを探します。

次の例では、仕様バージョンと実装バージョンの両方が完全一致しなければならないケースを示します。

<library-ref>
   <library-name>myLibrary</library-name>
   <specification-version>2.0</specification-version>
   <implementation-version>8.1</implementation-version>
   <exact-match>true</exact-match>
</library-ref>

次の例では、context-root-override を指定しています。これがライブラリの 1 つで指定された古い context-root と、代わりに使用する (オーバーライド) 新しい context-root を参照します。

<library-ref>
   <library-name>myLibrary</library-name>
   <library-context-root-override>
   <library-context-root>webapp</library-context-root>
   <override-value>mywebapp</override-value>
   </library-context-root-override>
</library-ref>

参照されたエンタープライズ ライブラリ内の context-root のオーバーライド

Java EE アプリケーションは、weblogic-application.xml デプロイメント記述子内のエントリを使用して、参照された EAR ライブラリ内の context-root をオーバーライドできます。表 9-3 で、ライブラリ参照において context-root をオーバーライドする XML 要素について説明します。

表 9-3 weblogic-application.xml の共有 Java EE ライブラリ オーバーライド用の要素
要素
説明
library-context-root
ライブラリで宣言されている context-root 要素をオーバーライドする文字列値 (省略可能)。この要素が存在しない場合は、ライブラリの context-root が使用される。
参照側アプリケーション (ユーザ アプリケーションなど) のみが、ライブラリで宣言されている context-root 要素をオーバーライドできる。
override-value
ライブラリで宣言されている context-root 要素をオーバーライドする際の library-context-root-override 要素の値を指定する文字列値 (省略可能)。これらの要素が存在しない場合は、ライブラリの context-root が使用される。

次の例では、context-root-override を指定しています。これがライブラリの 1 つで指定された古い context-root と、代わりに使用する (オーバーライド) 新しい context-root を参照します。

<library-ref>
   <library-name>myLibrary</library-name>
   <specification-version>2.0</specification-version>
   <implementation-version>8.1</implementation-version>
<exact-match>true</exact-match>
</library-ref>
<library-context-root-override>
   <library-context-root>webapp</library-context-root>
   <override-value>mywebapp</override-value>
</library-context-root-override>

上記の例では、現行のアプリケーションが myLibrary を参照します。これには、webappcontext-root が格納されています。この参照をオーバーライドする唯一の方法は、webappmywebapp にマップする library-context-root-override を宣言することです。

スタンドアロン モジュールとしてデプロイされた共有 Java EE ライブラリの URI

スタンドアロン モジュール (EJB または Web アプリケーション) としてデプロイされた共有 Java EE ライブラリの URI を参照する場合、モジュール URI は、共有 Java EE ライブラリのデプロイメント名に対応している必要があります。これは、デプロイメント時に手動で割り当てた名前でも、デプロイされたアーカイブ ファイルの名前でも、デプロイされた展開アーカイブ ディレクトリの名前でも構いません。同じモジュールを異なるファイル名で、または別の場所から再デプロイする場合、デフォルト デプロイメント名も変わるので、適切な URI を使用するように参照側アプリケーションを更新する必要があります。

この問題を避けるには、すべての共有 Java EE ライブラリを、スタンドアロン モジュールではなく、エンタープライズ アプリケーションとしてパッケージ化します。スタンドアロン Java EE モジュールとしてライブラリをデプロイする場合は、既知のデプロイメント名を必ず指定し、参照側アプリケーションでその名前を URI として使用します。

 


Java EE アプリケーションまたはモジュールからのオプション パッケージの参照

Java EE アーカイブ (JAR、WAR、RAR、EAR) は、アーカイブのマニフェスト ファイルの属性を使用して 1 つまたは複数の登録済みオプション パッケージを参照できます。

表 9-4 オプション パッケージ参照用のマニフェスト属性
属性
説明
Extension-List logical_name [...]
オプション パッケージの依存関係の論理名を定義する文字列値 (必須)。Extension-List 属性で複数の値を使用すると、複数のオプション パッケージの依存関係を指定できる。次に例を示す。
Extension-List: dependency1 dependency2
[logical_name-]Extension-Name
オプション パッケージの依存関係の名前を識別する文字列値 (必須)。この値は、オプション パッケージのマニフェスト ファイルで定義された Extension-Name 属性の名前と一致する必要がある。
1 つのアーカイブから複数のオプション パッケージを参照する場合は、Extension-Name 属性に適切な論理名を付加する。次に例を示す。
dependency1-Extension-Name: myOptPkg
[logical_name-]Specification-Version
オプション パッケージの必要な仕様バージョンを定義する文字列値 (省略可能)。この要素を設定しなかった場合、アーカイブは、最新の仕様バージョンに一致するパッケージを使用する。メジャー/マイナー バージョン フォーマットで specification-version 値を指定した場合、アーカイブは、コンフィグレーションした値を下回らない最新の仕様バージョンに一致するパッケージを使用する。使用可能なすべてのパッケージが、コンフィグレーションされた specification-version よりも古い場合、アーカイブをデプロイすることはできない。
メジャー/マイナー バージョニング規約に従っていない文字列値 (9.2BETA など) を指定した場合、アーカイブでは、パッケージのマニフェスト ファイルの Specification-Version 属性に完全一致する文字列値を持つオプション パッケージが必要になる (表 9-1 を参照)。
1 つのアーカイブから複数のオプション パッケージを参照する場合は、Specification-Version 属性に適切な論理名を付加する。
[logical_name-]Implementation-Version
オプション パッケージの必要な実装バージョンを指定する文字列値 (省略可能)。この要素を設定しなかった場合、アーカイブは、最新の実装バージョンに一致するパッケージを使用する。メジャー/マイナー バージョン フォーマットで文字列値を指定した場合、アーカイブは、コンフィグレーションした値を下回らない最新の実装バージョンに一致するパッケージを使用する。使用可能なすべてのライブラリが、コンフィグレーションされた implementation-version よりも古い場合、アプリケーションをデプロイすることはできない。
メジャー/マイナー バージョニング規約に従っていない文字列値 (9.2BETA など) を指定した場合、アーカイブでは、パッケージのマニフェスト ファイルの Implementation-Version 属性に完全一致する文字列値を持つオプション パッケージが必要になる (表 9-1 を参照)。
1 つのアーカイブから複数のオプション パッケージを参照する場合は、Implementation-Version 属性に適切な論理名を付加する。

たとえば、依存関係のあるアーカイブの場合、マニフェスト ファイルの以下の単純なエントリでは、myAppPkg および my3rdPartyPkg という 2 つのオプション パッケージを参照します。

Extension-List: internal 3rdparty
internal-Extension-Name: myAppPkg
3rdparty-Extension-Name: my3rdPartyPkg

次の例では、仕様バージョン 2.0 以降の myAppPkg を要求します。

Extension-List: internal 3rdparty
internal-Extension-Name: myAppPkg
3rdparty-Extension-Name: my3rdPartyPkg
internal-Specification-Version: 2.0

次の例では、仕様バージョン 2.0 以降の myAppPkg、実装バージョンが完全一致する my3rdPartyPkg を要求します。

Extension-List: internal 3rdparty
internal-Extension-Name: myAppPkg
3rdparty-Extension-Name: my3rdPartyPkg
internal-Specification-Version: 2.0
3rdparty-Implementation-Version: 8.1GA

デフォルトでは、WebLogic Server は、アプリケーションまたはモジュールをデプロイする際にマニフェスト ファイルのオプション パッケージに対する参照を解決できない場合、警告を出力しますが、デプロイメントは続行します。この動作を変更するには、WebLogic Server の起動時に、コマンドラインまたはサーバの起動を制御するコマンド スクリプト ファイルで、システム プロパティ weblogic.application.RequireOptionalPackagestrue に設定します。このシステム プロパティを true に設定すると、WebLogic Server は、マニフェスト ファイルのオプション パッケージの参照を解決できない場合にアプリケーションまたはモジュールをデプロイしません。

 


weblogic.appmerge を使用したライブラリの結合

weblogic.appmerge はライブラリを 1 つのアプリケーションに結合するために使用するツールです (コンテンツと記述子がそれぞれ結合されます)。結合されたアプリケーションをディスクに書き込む機能もあります。その後で weblogic.appmerge を使用し、ディスクに書き込んだ結合されたアプリケーションを調べることで、ライブラリの結合を理解することもできます。

CLI からの weblogic.appmerge の使用

次の構文を使用して weblogic.appmerge を呼び出します。

   java weblogic.appmerge [オプション] <ear、jar、war ファイル、またはディレクトリ>

有効なオプションを表 9-5 に示します。

表 9-5 weblogic.appmerge のオプション
オプション
説明
-help
標準の使い方メッセージを出力する。
-version
バージョン情報を出力する。
-output <file>
代替的な出力アーカイブまたはディレクトリを指定する。これが設定されていないと、出力はソース アーカイブまたはディレクトリに置かれる。
-plan <file>
デプロイメント プラン (省略可能) を指定する。
-verbose
より冗長な出力を提供する。
-library <file>
ライブラリのカンマ区切りのリスト。各ライブラリは、マニフェストで設定されていない場合、その名前とバージョンを次の構文で設定できる。
<file> [@name=<string>@libspecver=<version> @libimplver=<version|string>]
-librarydir <dir>
指定したディレクトリ内のすべてのファイルをライブラリとして登録する。
-writeInferredDescriptors
アプリケーションまたはモジュールに、デプロイメント記述子がアノテーション情報と共に格納されることを指定する。

例 :

   $ java weblogic.appmerge -output CompleteSportsApp.ear -library Weather.war,Calendar.ear SportsApp.ear

Ant タスクとしての weblogic.appmerge の使用

Ant タスクではコマンドライン ユーティリティと同様の機能を提供しています。source、output、libraryDir、plan、および verbose の各属性と、複数の <library> 下位要素がサポートされています。次に例を示します。

<taskdef name="appmerge" classname="weblogic.ant.taskdefs.j2ee.AppMergeTask"/>
<appmerge source="SportsApp.ear" output="CompleteSportsApp.ear">
   <library file="Weather.war"/>
   <library file="Calendar.ear"/>
</appmerge>

 


分割開発ディレクトリ環境への共有 Java EE ライブラリの統合

BuildXMLGen には、1 つまたは複数の共有 Java EE ライブラリ ディレクトリを含むビルド ターゲットを生成するための -librarydir オプションがあります。「weblogic.BuildXMLGen を使用した基本的な build.xml ファイルの生成」を参照してください。

wlcompile および wlappc Ant タスクには、アプリケーション ビルドのクラスパスに含める 1 つまたは複数の共有 Java EE ライブラリを指定するための librarydir 属性と library 要素があります。「分割開発ディレクトリでのアプリケーションのビルド」を参照してください。

 


共有 Java EE ライブラリおよびそれに依存するアプリケーションのデプロイ

共有 Java EE ライブラリを 1 つまたは複数の WebLogic Server インスタンスに登録するには、対象サーバにライブラリをデプロイし、デプロイメントが共有されるように指定します。共有 Java EE ライブラリは、ライブラリを参照するアプリケーションのデプロイ先と同じ WebLogic Server インスタンスに登録する必要があります。必要なライブラリを登録していないサーバ インスタンスに参照側アプリケーションをデプロイする場合、参照側アプリケーションのデプロイメントは失敗します。詳細については、『WebLogic Server アプリケーションのデプロイメント』の「WebLogic Server でのライブラリの登録」を参照してください。

Administration Console を使用して共有 Java EE ライブラリをインストール (デプロイ) する場合の詳細な手順については、「Java EE ライブラリのインストール」を参照してください。Administration Console を使用して、ライブラリを参照するアプリケーションのデプロイ先となるサーバまたはクラスタにライブラリをデプロイする場合の手順については、「Java EE ライブラリのサーバまたはクラスタへの割り当て」を参照してください。

繰り返しの開発プロセスの一部として wldeploy Ant タスクを使用する場合は、librarylibImplVer、および libSpecVer 属性を使用して共有 Java EE ライブラリをデプロイします。詳細と例については、「wldeploy Ant タスクのリファレンス」を参照してください。

共有 Java EE ライブラリを登録後、そのライブラリと依存関係にあるアプリケーションおよびアーカイブをデプロイできます。依存関係のあるアプリケーションは、対象サーバが必要なライブラリを登録しており、登録されたデプロイメントがアプリケーションまたはアーカイブのバージョン要件に従っている場合にのみデプロイできます。詳細については、『WebLogic Server アプリケーションのデプロイメント』の「ライブラリを参照するアプリケーションのデプロイ」を参照してください。

 


Web アプリケーション共有 Java EE ライブラリの情報

このトピックでは、大部分において、エンタープライズ アプリケーションでのみ参照可能な共有 Java EE ライブラリについて説明しています。ただし、別の Web アプリケーションでのみ参照可能なライブラリを作成することもできます。このライブラリの機能はアプリケーション ライブラリと非常に似ていますが、参照方法が多少異なります。

注意 : 便宜上、この節では、別の Web アプリケーションでのみ参照される共有 Java EE ライブラリのことを指すのに「Web アプリケーション ライブラリ」という用語を使います。

具体的には、次のとおりです。

こうした参照方法の違いを除けば、Web アプリケーション ライブラリを作成、パッケージ化、デプロイする方法は、通常の共有 Java EE ライブラリの場合と同じです。

 


Web アプリケーションにおける Web アプリケーション ライブラリの使用

標準の共有 Java EE アプリケーションをアプリケーション ライブラリとして WebLogic Server にデプロイできるのと同様に、標準の Web アプリケーションを Web アプリケーション ライブラリとして WebLogic Server にデプロイし、他の Web アプリケーションがこれらのライブラリを参照できるようにすることが可能です。

Web アプリケーション ライブラリを使用するとコードとリソースの再利用が容易になります。また、Web アプリケーションが使用する可能性のあるサード パーティの Web アプリケーションまたはフレームワークを分離するのにも役立ちます。さらに、共通のリソースをライブラリとして個別にパッケージ化し、さまざまな Web アプリケーションで参照されるようにすることもできます。こうすると、そのリソースを各 Web アプリケーションにバンドルする必要がなくなります。Web アプリケーションに Web アプリケーション ライブラリを含める場合、コンテナはデプロイメント時に、すべての静的リソース、クラス、および JAR ファイルを Web アプリケーションに結合します。

Web アプリケーション ライブラリを使用する最初の手順は、Web アプリケーションを Web アプリケーション ライブラリとして登録することです。それには、Administration Console または weblogic.Deployer ツールを使用して Web アプリケーションをライブラリとしてデプロイします。他の Web アプリケーションにこのライブラリを参照させるには、次のように、各アプリケーションの weblogic.xml ファイルで、Web アプリケーション ライブラリを指す library-ref 要素を指定する必要があります。

  <library-ref>
<library-name>BaseWebApp</library-name>
<specification-version>2.0</specification-version>
<implementation-version>8.1beta</implementation-version>
<exact-match>false</exact-match>
</library-ref>

複数のライブラリがある場合、CLASSPATH/resource パスの優先順位は、weblogic.xml ファイルで library-ref 要素が出現する順序に従います。

 


LibraryRuntimeMBean に登録された共有 Java EE ライブラリ情報へのアクセス

デプロイされた各共有 Java EE ライブラリは、LibraryRuntimeMBean で表されます。この MBean を使用すると、名前やバージョンなど、ライブラリ自体の情報を取得できます。また、デプロイされたアプリケーションに関連付けられた ApplicationRuntimeMBean を取得することもできます。ApplicationRuntimeMBean では、アプリケーションが使用するライブラリにアクセスする際に、次の 2 種類の方法を用いることができます。

詳細については、『WebLogic Server API リファレンス』を参照してください。

 


共有 Java EE ライブラリの参照時のモジュールの優先順位

エンタープライズ アプリケーションが 1 つまたは複数の共有 Java EE ライブラリを参照し、アプリケーションが WebLogic Server にデプロイされている場合、サーバは、内部で参照側のエンタープライズ アプリケーションの weblogic-application.xml ファイルの情報を参照されるライブラリのデプロイメント記述子の情報に結合します。これは、次の順序で行われます。

  1. エンタープライズ アプリケーションがデプロイされると、WebLogic Server は weblogic-application.xml デプロイメント記述子を読み込みます。
  2. WebLogic Server は、参照対象の任意の共有 Java EE ライブラリのデプロイメント記述子を読み込みます。ライブラリの種類 (エンタープライズ アプリケーション、EJB、または Web アプリケーション) によって、読み込まれるファイルは weblogic-application.xmlweblogic.xmlweblogic-ejb-jar.xml などになります。
  3. WebLogic Server は、参照される共有 Java EE ライブラリのデプロイメント記述子を最初に (一度に参照される順番で) 結合し、そのライブラリの記述子ファイルの上に参照側のエンタープライズ アプリケーションの weblogic-application.xml ファイルを結合します。

記述子ファイルの結合方法の結果、weblogic-application.xml ファイルで最初に参照される共有 Java EE ライブラリの記述子の要素が、最後にあるものよりも優先されます。エンタープライズ アプリケーションの記述子自体の要素は、ライブラリの記述子のすべての要素よりも優先されます。

たとえば、myApp というエンタープライズ アプリケーションが、それぞれエンタープライズ アプリケーションとしてパッケージ化されている 2 つの共有 Java EE ライブラリ myLibAmyLibB をその順序で参照するとします。myApp アプリケーションと myLibA アプリケーションには、myEJB という EJB モジュール、myLibA アプリケーションと myLibB アプリケーションには、myOtherEJB という EJB モジュールがあります。

さらに、myApp アプリケーションがデプロイされると、クライアントが myApp アプリケーションを介して myEJB モジュールを呼び出すとします。この場合、参照側アプリケーションのモジュールは参照対象アプリケーションのモジュールよりも優先されるので、WebLogic Server は、実際には myLibA の EJB ではなく myApp アプリケーションの EJB を呼び出します。クライアントが myOtherEJB の EJB を呼び出すと、WebLogic Server は myLibA の EJB を呼び出します。これは、myAppweblogic-application.xml ファイルで最初にライブラリが参照され、同じ名前を持つ myLibB アプリケーションの EJB よりも優先されるためです。

 


共有 Java EE ライブラリを使用する場合のベスト プラクティス

共有 Java EE ライブラリおよびオプション パッケージを開発する際には、以下のベスト プラクティスに留意してください。


ページの先頭       前  次