このトピックでは、エンタープライズ アプリケーション内の共有オブジェクトの場所と可用性を管理するための高度なテクニックについて説明します。
Web プロジェクト (Web サービス プロジェクトまたは動的 Web プロジェクト) は、以下のいずれかに依存します。
これらのプロジェクト間のリンクは、さまざまな方法で作成できます。ここでは、以下について説明します。
EAR プロジェクト内のすべてのユーティリティ プロジェクトは、自動的に JAR にコンパイルされ、デプロイされている EAR の APP-INF/lib ディレクトリにコピーされます。
ユーティリティ プロジェクトが特定の Web プロジェクトの WEB-INF/lib フォルダにコンパイルされるように指定して、そのプロジェクトでしか利用できないようにすることもできます。
ユーティリティ プロジェクトを複数の EAR プロジェクトに追加して、複数の Web プロジェクトで利用できるようにすることも可能です。
Web サービス プロジェクトや動的 Web プロジェクトの作成時に、プロジェクト作成ウィザードの最初の画面で [Add project to an EAR] を選択すると、4 番目の画面が次のようなデフォルト設定になります。
作成ウィザードの最初の画面で [Add project to an EAR] を選択しなかった場合は、[EAR '(EAR プロジェクト名)' 内のすべての Web プロジェクトにこのプロジェクトへの依存関係を追加します] オプションは表示されず、手動でプロジェクトを EAR に追加しなければなりません。
デフォルト設定 [EAR '(EAR プロジェクト名)' 内のすべての Web プロジェクトにこのプロジェクトへの依存関係を追加します] を選択すると、プロジェクトのビルド時に、すべてのユーティリティ プロジェクトと EJB プロジェクトがそのプロジェクトで利用できるようになります。特定のプロジェクトにのみ依存関係を設定する場合は、[EAR '(EAR プロジェクト名)' 内のすべての Web プロジェクトにこのプロジェクトへの依存関係を追加します] オプションのチェックをはずします。その場合は、必要なユーティリティ プロジェクトと EJB プロジェクトを利用できるように明示的に設定する必要があります。
ユーティリティ プロジェクトがすでに EAR に追加されている場合は、そのユーティリティ プロジェクトを Web プロジェクトに追加できます。
追加したユーティリティ プロジェクトは Web プロジェクトのビルド パスに追加され、そのユーティリティ プロジェクト タイプを IDE で使用できるようになります。なお、[プロパティ] ダイアログの [Java のビルド・パス] オプションでは、Workshop for WebLogic プロジェクトの依存関係は正しく設定できません。ユーティリティ プロジェクトを Web プロジェクトに追加するということは、Web プロジェクトが EAR 内のユーティリティ モジュールの共有コピーにアクセスすることを意味します。Web プロジェクトにはファイルはコピーされません。
[EJB クライアント JAR を持つ EJB JAR への参照します。] ボックスと、[EJB JAR を使用します。]、[EJB クライアント JAR を使用します。]、および [両方とも許可します。] の各ボタンは、Workshop for WebLogic では使用されていません。また、EJB プロジェクトはライブラリではないため、[Web Libraries] タブには表示されません。
ユーティリティ プロジェクトを Web プロジェクトに追加するには、次の手順に従います。
Workshop for WebLogic でプロジェクト依存関係を作成する場合は、[J2EE Module Dependencies] オプションを使用することをお勧めします。[Java のビルド・パス] オプションではすべての依存関係を正しく作成できないため、プロジェクト依存関係の設定には使用しないようにしてください。
次に、ユーティリティ プロジェクトが EAR の APP-INF/lib ディレクトリにコンパイルされないようにする必要があります。次の手順に従います。
EAR 自体に追加されていないユーティリティ プロジェクトでも、その EAR 内の Web プロジェクトに追加することができます。手順は次のとおりです。
EAR に追加されていないユーティリティ プロジェクトは、個別の Web プロジェクトの WEB-INF\lib フォルダでのみ追加できます。
EAR プロジェクト内のすべての EJB プロジェクトは、Web サービス プロジェクトや動的 Web プロジェクトで利用できます。
Web サービス プロジェクトや動的 Web プロジェクトの作成時には、プロジェクト作成ウィザードの最初の画面で [Add project to an EAR] を選択すると、4 番目の画面が次のようなデフォルト設定になります。
作成ウィザードの最初の画面で [Add project to an EAR] を選択しなかった場合は、[EAR '(EAR プロジェクト名)' 内のすべての Web プロジェクトにこのプロジェクトへの依存関係を追加します] オプションは表示されず、手動でプロジェクトを EAR に追加しなければなりません。
特定の EJB プロジェクトにのみ依存関係を設定する場合は、[EAR '(EAR プロジェクト名)' 内のすべての Web プロジェクトにこのプロジェクトへの依存関係を追加します] オプションのチェックをはずします。その場合は、必要なプロジェクトを明示的に追加する必要があります。
EAR に EJB プロジェクトが追加されている場合は、次の手順で EAR 内の Web プロジェクトに EJB プロジェクトを追加できます。
[EJB クライアント JAR を持つ EJB JAR を参照します] ボックスと、[EJB JAR を使用します]、[EJB クライアント JAR を使用します]、および [両方とも許可します] の各ボタンは、Workshop for WebLogic では使用されていません。また、EJB プロジェクトはライブラリではないため、[Web Libraries] タブには表示されません。
実行時に WebLogic Server で利用できる標準的な EJB を使用しており、それが EAR プロジェクトにデプロイされていない場合は、[Java のビルド・パス] プロパティ ページを使用して設定する必要があります。
[Java のビルド・パス] プロパティ ページは、IDE 内で編集する Java ソースにのみ影響します。デプロイメント、J2EE アーカイブ ファイルのエクスポート、および Ant スクリプトの生成には影響しません。
複数の EAR で使用する Web プロジェクトがある場合は、単純に各 EAR プロジェクトを開いてプロジェクトをその EAR にリンクします。
プロジェクトが複数の EAR プロジェクトのメンバーである場合は、[J2EE Module Dependencies] プロパティ ページの [エンタープライズ アプリケーションのプロジェクト名] プルダウン ボックスに EAR プロジェクトのリストが表示されます。
プロジェクトが複数の EAR プロジェクトに追加されており、それら複数の EAR を同じサーバにデプロイすると、同じプロジェクトの複数のコピーがサーバにデプロイされることになるため名前が衝突します。この場合、プロジェクトの 1 つをアンデプロイすると衝突を回避できます。
他の方法としては、EAR プロジェクトの 1 つを開いて、EarContent/META-INF/application.xml を編集する方法もあります。その場合は、その Web プロジェクトの <context-root> 要素の値をユニークな値に変更します。このファイルを変更するのは高度なテクニックですので、十分に注意して実行してください。