このトピックでは、エンタープライズ アプリケーション内の共有オブジェクトの場所と可用性を管理するための高度なテクニックについて説明します。
Web プロジェクト (Web サービス プロジェクトまたは動的 Web プロジェクト) は、以下のいずれかに依存します。
これらのプロジェクト間のリンクは、さまざまな方法で作成できます。ここでは、以下について説明します。
EAR プロジェクト内のすべてのユーティリティ プロジェクトは、自動的に JAR にコンパイルされ、デプロイされている EAR の APP-INF/lib ディレクトリにコピーされます。
ユーティリティ プロジェクトが特定の Web プロジェクトの WEB-INF/lib フォルダにコンパイルされるように指定して、そのプロジェクトでしか利用できないようにすることもできます。
ユーティリティ プロジェクトを複数の EAR プロジェクトに追加して、複数の Web プロジェクトで利用できるようにすることも可能です。
Web サービス プロジェクトまたは動的な Web プロジェクトを作成する場合、ウィザードの最初の画面で [EAR にプロジェクトを追加] を選択すると、新しいプロジェクトで任意のユーティリティ プロジェクトを利用できるようになります。
作成ウィザードの最初の画面で [EAR にプロジェクトを追加] を選択しなかった場合は、手動でプロジェクトを EAR に追加する必要があります。
[EAR '(EAR プロジェクト名)' 内のすべての Web プロジェクトにこのプロジェクトへの依存関係を追加します] 設定を指定すると、プロジェクトのビルド時に、当該プロジェクトですべてのユーティリティおよび EJB プロジェクトが利用できるようになります。特定のライブラリ プロジェクトにのみ依存関係を設定する場合は、[EAR '(EAR プロジェクト名)' 内のすべての Web プロジェクトにこのプロジェクトへの依存関係を追加します] オプションのチェックをはずします。その場合は、必要なユーティリティ プロジェクトと EJB プロジェクトを利用できるように明示的に設定する必要があります。
ユーティリティ プロジェクトがすでに EAR に追加されている場合は、そのユーティリティ プロジェクトを Web プロジェクトに追加できます。
追加したユーティリティ プロジェクトは Web プロジェクトのビルド パスに追加され、そのユーティリティ プロジェクト タイプを IDE で使用できるようになります。なお、[プロパティ] ダイアログの [Java のビルド・パス] オプションでは、Workshop プロジェクトの依存関係は正しく設定できません。ユーティリティ プロジェクトを Web プロジェクトに追加するということは、Web プロジェクトが EAR 内のユーティリティ モジュールの共有コピーにアクセスすることを意味します。Web プロジェクトにはファイルはコピーされません。
[EJB クライアント JAR を持つ EJB JAR を参照します。] ボックスや [EJB JAR を使用します。]、[EJB クライアント JAR を使用します。] および [両方とも許可します。] ボタンは Workshop では使用されません。また、EJB プロジェクトはライブラリではないため、[Web ライブラリー] タブには表示されません。
ユーティリティ プロジェクトを Web プロジェクトに追加するには、次の手順に従います。
Workshop でプロジェクト依存関係を作成する場合は、[J2EE モジュール依存関係] オプションを使用することをお勧めします。[Java のビルド・パス] オプションではすべての依存関係を正しく作成できないため、プロジェクト依存関係の設定には使用しないようにしてください。
次に、ユーティリティ プロジェクトが EAR の APP-INF/lib ディレクトリにコンパイルされないようにする必要があります。次の手順に従います。
EAR 自体に追加されていないユーティリティ プロジェクトでも、その EAR 内の Web プロジェクトに追加することができます。手順は次のとおりです。
EAR に追加されていないユーティリティ プロジェクトは、個別の Web プロジェクトの WEB-INF\lib フォルダでのみ追加できます。
EAR プロジェクト内のすべての EJB プロジェクトは、Web サービス プロジェクトや動的 Web プロジェクトで利用できます。
Web サービス プロジェクトまたは動的な Web プロジェクトの作成時に、ウィザードの最初の画面で [EAR にプロジェクトを追加] を選択すると、新しいプロジェクトで EAR 内の任意の EJB プロジェクトを使用できるようになります。
特定の EJB プロジェクトに対する選択的な依存関係を作成するには、必要なすべてのプロジェクトを明示的に追加する必要があります。
EAR に EJB プロジェクトが追加されている場合は、次の手順で EAR 内の Web プロジェクトに EJB プロジェクトを追加できます。
[EJB クライアント JAR を持つ EJB JAR を参照します。] ボックスや [EJB JAR を使用します。]、[EJB クライアント JAR を使用します。] および [両方とも許可します。] ボタンは Workshop では使用されません。また、EJB プロジェクトはライブラリではないため、[Web ライブラリー] タブには表示されません。
実行時に WebLogic Server で利用できる標準的な EJB を使用しており、それが EAR プロジェクトにデプロイされていない場合は、[Java のビルド・パス] プロパティ ページを使用して設定する必要があります。
[Java のビルド・パス] プロパティ ページは、IDE 内で編集する Java ソースにのみ影響します。デプロイメント、J2EE アーカイブ ファイルのエクスポート、および Ant スクリプトの生成には影響しません。
複数の 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 部分を必ず含めるようにしてください。