プロジェクト依存関係のカスタマイズ

このトピックでは、エンタープライズ アプリケーション内の共有オブジェクトの場所と可用性を管理するための高度なテクニックについて説明します。

Web プロジェクト (Web サービス プロジェクトまたは動的 Web プロジェクト) は、以下のいずれかに依存します。

これらのプロジェクト間のリンクは、さまざまな方法で作成できます。ここでは、以下について説明します。

Web プロジェクトでユーティリティ プロジェクトを利用できるようにする

EAR プロジェクト内のすべてのユーティリティ プロジェクトは、自動的に JAR にコンパイルされ、デプロイされている EAR の APP-INF/lib ディレクトリにコピーされます。

ユーティリティ プロジェクトが特定の Web プロジェクトの WEB-INF/lib フォルダにコンパイルされるように指定して、そのプロジェクトでしか利用できないようにすることもできます。

ユーティリティ プロジェクトを複数の EAR プロジェクトに追加して、複数の Web プロジェクトで利用できるようにすることも可能です。

オプション 1 : Web プロジェクトの作成時にユーティリティ プロジェクトを利用できるようにする

Web サービス プロジェクトまたは動的な Web プロジェクトを作成する場合、ウィザードの最初の画面で [EAR にプロジェクトを追加] を選択すると、新しいプロジェクトで任意のユーティリティ プロジェクトを利用できるようになります。

作成ウィザードの最初の画面で [EAR にプロジェクトを追加] を選択しなかった場合は、手動でプロジェクトを EAR に追加する必要があります。

[EAR '(EAR プロジェクト名)' 内のすべての Web プロジェクトにこのプロジェクトへの依存関係を追加します] 設定を指定すると、プロジェクトのビルド時に、当該プロジェクトですべてのユーティリティおよび EJB プロジェクトが利用できるようになります。特定のライブラリ プロジェクトにのみ依存関係を設定する場合は、[EAR '(EAR プロジェクト名)' 内のすべての Web プロジェクトにこのプロジェクトへの依存関係を追加します] オプションのチェックをはずします。その場合は、必要なユーティリティ プロジェクトと EJB プロジェクトを利用できるように明示的に設定する必要があります。

オプション 2 : 特定の Web プロジェクトにユーティリティ プロジェクトを追加する

ユーティリティ プロジェクトがすでに EAR に追加されている場合は、そのユーティリティ プロジェクトを Web プロジェクトに追加できます。

  1. [プロジェクト・エクスプローラ] ビューで Web サービスまたは動的 Web プロジェクトの名前を右クリックし、コンテキスト メニューから [プロパティ] を選択します。左側のバーで [J2EE モジュール依存関係] をクリックします。 [J2EE モジュール] タブが選択されていることを確認してください。
  2. ユーティリティ プロジェクトの名前の横にあるボックスをチェックします。[適用] をクリックして変更内容を保存します。

追加したユーティリティ プロジェクトは Web プロジェクトのビルド パスに追加され、そのユーティリティ プロジェクト タイプを IDE で使用できるようになります。なお、[プロパティ] ダイアログの [Java のビルド・パス] オプションでは、Workshop プロジェクトの依存関係は正しく設定できません。ユーティリティ プロジェクトを Web プロジェクトに追加するということは、Web プロジェクトが EAR 内のユーティリティ モジュールの共有コピーにアクセスすることを意味します。Web プロジェクトにはファイルはコピーされません。

[EJB クライアント JAR を持つ EJB JAR を参照します。] ボックスや [EJB JAR を使用します。]、[EJB クライアント JAR を使用します。] および [両方とも許可します。] ボタンは Workshop では使用されません。また、EJB プロジェクトはライブラリではないため、[Web ライブラリー] タブには表示されません。

オプション 3 : ユーティリティ プロジェクトを EAR プロジェクトから Web プロジェクトに移動する

ユーティリティ プロジェクトを Web プロジェクトに追加するには、次の手順に従います。

  1. [プロジェクト・エクスプローラ] ビューで Web サービスまたは動的 Web プロジェクトの名前を右クリックし、コンテキスト メニューから [プロパティ] を選択します。左側のバーで [J2EE モジュール依存関係] をクリックします。 [J2EE モジュール] タブが選択されていることを確認してください。

    ユーティリティ プロジェクトの名前の横にあるボックスのチェックをはずします。[適用] をクリックして変更内容を保存します。

    [EJB クライアント JAR を持つ EJB JAR を参照します。] ボックスや [EJB jar を使用します。]、[EJB クライアント JAR を使用します。] および [両方とも許可します。] ボタンは Workshop では使用されません。また、EJB プロジェクトはライブラリではないため、[Web ライブラリー] タブには表示されません。
  2. [Web ライブラリー] タブをクリックします。次の図の例では、現在のプロジェクトに追加されていない新しいユーティリティ プロジェクトが 1 つあります。

  3. プロジェクト名の横のボックスをチェックして [OK] をクリックします。これにより、新しいユーティリティ プロジェクトが既存のプロジェクトに追加され、その JAR ファイルの仮想コピーがこのプロジェクトの WEB-INF/lib フォルダに格納されてビルドやデプロイメントに利用できるようになります。

Workshop でプロジェクト依存関係を作成する場合は、[J2EE モジュール依存関係] オプションを使用することをお勧めします。[Java のビルド・パス] オプションではすべての依存関係を正しく作成できないため、プロジェクト依存関係の設定には使用しないようにしてください。

次に、ユーティリティ プロジェクトが EAR の APP-INF/lib ディレクトリにコンパイルされないようにする必要があります。次の手順に従います。

  1. [プロジェクト・エクスプローラ] ビューで EAR プロジェクト名をクリックして EAR プロジェクトを選択します。
  2. [プロジェクト|プロパティ] を選択して [プロパティ] ダイアログを開き、左側のバーで [J2EE モジュール依存関係] をクリックします。

  3. プロジェクト名の横にあるボックスのチェックをはずして [OK] をクリックします。これで、ユーティリティ プロジェクトが EAR プロジェクトから削除されます。

オプション 4 : EAR の外部からユーティリティ プロジェクトを追加する

EAR 自体に追加されていないユーティリティ プロジェクトでも、その EAR 内の Web プロジェクトに追加することができます。手順は次のとおりです。

  1. [プロジェクト・エクスプローラ] ビューで Web サービスまたは動的 Web プロジェクトの名前を右クリックし、コンテキスト メニューから [プロパティ] を選択します。左側のバーで [J2EE モジュール依存関係] をクリックします。[Web ライブラリー] タブをクリックします。次の図の例では、現在のプロジェクトに追加されていない新しいユーティリティ プロジェクトが 1 つあります。

  2. プロジェクト名の横のボックスをチェックして [OK] をクリックします。これにより、新しいユーティリティ プロジェクトが既存のプロジェクトに追加され、デプロイメント時に JAR ファイルがこのプロジェクトの WEB-INF/lib フォルダにコピーされます。

EAR に追加されていないユーティリティ プロジェクトは、個別の Web プロジェクトの WEB-INF\lib フォルダでのみ追加できます。

EAR 内の特定の Web プロジェクトで EJB を利用できるようにする

EAR プロジェクト内のすべての EJB プロジェクトは、Web サービス プロジェクトや動的 Web プロジェクトで利用できます。

オプション 1 : プロジェクト作成時に EJB を Web プロジェクト/モジュールに追加する

Web サービス プロジェクトまたは動的な Web プロジェクトの作成時に、ウィザードの最初の画面で [EAR にプロジェクトを追加] を選択すると、新しいプロジェクトで EAR 内の任意の EJB プロジェクトを使用できるようになります。

特定の EJB プロジェクトに対する選択的な依存関係を作成するには、必要なすべてのプロジェクトを明示的に追加する必要があります。

オプション 2 : EJB を Web プロジェクトに追加する

EAR に EJB プロジェクトが追加されている場合は、次の手順で EAR 内の Web プロジェクトに EJB プロジェクトを追加できます。

  1. [プロジェクト・エクスプローラ] ビューで Web サービスまたは動的 Web プロジェクトの名前を右クリックし、コンテキスト メニューから [プロパティ] を選択します。左側のバーで [J2EE モジュール依存関係] をクリックします。 [J2EE モジュール] タブが選択されていることを確認してください。

    EJB プロジェクトの名前の横にあるボックスをチェックします。[適用] をクリックして変更内容を保存します。

[EJB クライアント JAR を持つ EJB JAR を参照します。] ボックスや [EJB JAR を使用します。]、[EJB クライアント JAR を使用します。] および [両方とも許可します。] ボタンは Workshop では使用されません。また、EJB プロジェクトはライブラリではないため、[Web ライブラリー] タブには表示されません。

オプション 3 : EAR の外部から EJB を利用できるようにする

実行時に WebLogic Server で利用できる標準的な EJB を使用しており、それが EAR プロジェクトにデプロイされていない場合は、[Java のビルド・パス] プロパティ ページを使用して設定する必要があります。

  1. [プロジェクト・エクスプローラ] ビューでプロジェクト名を右クリックし、コンテキスト メニューから [プロパティ] を選択します。左側のバーで [Java のビルド・パス] をクリックします。

[Java のビルド・パス] プロパティ ページは、IDE 内で編集する Java ソースにのみ影響します。デプロイメント、J2EE アーカイブ ファイルのエクスポート、および Ant スクリプトの生成には影響しません。

複数の EAR プロジェクトへの Web プロジェクトの追加

複数の EAR で使用する Web プロジェクトがある場合は、単純に各 EAR プロジェクトを開いてプロジェクトをその EAR にリンクします。

プロジェクトが複数の EAR プロジェクトのメンバーである場合は、[J2EE モジュール依存関係] プロパティ ページの [エンタープライズ・アプリケーション・プロジェクト名] プルダウン ボックスに EAR プロジェクトのリストが表示されます。

プロジェクトが複数の EAR プロジェクトに追加されており、それら複数の EAR を同じサーバにデプロイすると、同じプロジェクトの複数のコピーがサーバにデプロイされることになるため名前が衝突します。この場合、プロジェクトの 1 つをアンデプロイすると衝突を回避できます。

他の方法としては、EAR プロジェクトの 1 つを開いて、EarContent/META-INF/application.xml を編集する方法もあります。その場合は、その Web プロジェクトの <context-root> 要素の値をユニークな値に変更します。このファイルを変更するのは高度なテクニックですので、十分に注意して実行してください。

サーバでアプリケーション スコープのモジュールを利用できるようにする

アプリケーション スコープのモジュールを実行時にサーバから利用できるようにするには、そのモジュールが必ず EAR のルートにデプロイされるようにする必要があります。そのためには、アプリケーション スコープのモジュールを次の場所からコピーします。

EAR_PROJECT_ROOT/EarContent/META-INF

これらのモジュールは、weblogic-application.xml ファイルの <module> 要素にマップする必要があります。モジュールへのパスは相対パスですので、パスの META-INF 部分を必ず含めるようにしてください。

関連トピック

標準のプロジェクト依存関係のコンフィグレーション


さらにヘルプが必要ですか。質問は Workshop ニュース グループまでお寄せください。