プロジェクト依存関係には、以下の 3 つの原則があります。
- すべてのプロジェクト (Web サービス、動的 Web プロジェクト、ユーティリティ プロジェクト、および EJB プロジェクト) をまとめてサーバまたはアーカイブにデプロイする場合は、それらすべてを EAR プロジェクトに追加する必要があります。プロジェクトの作成時に自動的に設定できます。
- 既存の Web サービス プロジェクトまたは動的 Web プロジェクトを含む EAR にユーティリティ プロジェクトや EJB プロジェクトを追加する場合は、ビルド時に新しいユーティリティ プロジェクトや EJB プロジェクトを各 Web プロジェクト (Web サービス プロジェクトおよび動的 Web プロジェクト) から利用できるようにしておく必要があります。プロジェクトの作成時に自動的に設定できます。
- ユーティリティ プロジェクトや EJB プロジェクトが他のユーティリティ プロジェクトや EJB プロジェクトに依存する場合は、それらの依存関係を明示的に設定する必要があります。依存関係が循環しないよう注意しなければなりません。
以下のような通常の手順では、依存関係が自動的に作成されます。
- まず EAR プロジェクトを作成し、新しいプロジェクトを作成する際に、プロジェクト作成ウィザードで [EAR にプロジェクトを追加] オプションを選択してプロジェクトを EAR に追加した場合
または
- 先にプロジェクトを作成してから EAR プロジェクトを作成し、プロジェクト作成ウィザードを使用してプロジェクトを EAR に追加した場合
アプリケーション スコープのプロジェクト
EAR に追加したプロジェクトは、「アプリケーション スコープ」です。EAR にプロジェクトを追加するには、プロジェクトの作成時に [ear にプロジェクトを追加] を選択するか、EAR プロジェクトの J2EE モジュール依存関係のプロパティ ページを使用します。J2EE モジュール依存関係のプロパティ ページにアクセスするには、EAR プロジェクトを右クリックし、[プロパティ|J2EE モジュール依存関係] をクリックします。
プロジェクト依存関係の手動コンフィグレーション
以下の場合は、プロジェクト依存関係の明示的なコンフィグレーションが必要になることがあります。
- プロジェクトを作成するのではなく、ワークスペースにインポートした場合
- プロジェクトの作成時に EAR に追加しなかった場合
- ビルド時または実行時に、ユーティリティ プロジェクトまたは EJB プロジェクトが利用できないために、プロジェクトが正しくコンパイルされなかった場合
- ソース ファイルの編集時に、ユーティリティ プロジェクトまたは EJB プロジェクトのオブジェクトへの参照が正しく認識されなかった場合
注意 : [プロジェクト参照] パネル ([プロジェクト|プロパティ|プロジェクト参照]) を使用してプロジェクト参照を編集しても、適切な J2EE モジュールの依存関係は更新されません。[プロジェクト参照] パネルを使用した手動での参照の変更はしないようにする必要があります。このパネルの代わりに、[J2EE モジュール依存関係] パネル ([プロジェクト|プロパティ|J2EE モジュール依存関係) を使用するようにします。[J2EE モジュール依存関係] パネルの詳細な使用方法については、以下を参照してください。
プロジェクトを EAR に追加する
プロジェクトはローカルで正しくコンパイルされたのに、EAR にすべてのプロジェクトが含まれていなかったためにサーバに正しくデプロイされなかった場合は、この依存関係を明示的にコンフィグレーションしなければならないことがあります。EAR に関連付けられているすべてのプロジェクト (EJB プロジェクト、ユーティリティ プロジェクト、動的 Web プロジェクト、Web サービス プロジェクトなど) を EAR に追加する必要があります。
プロジェクトを EAR プロジェクトに追加するには、次の手順に従います。
- [プロジェクト・エクスプローラ] ビューで EAR プロジェクト名を右クリックし、コンテキスト メニューから [プロパティ] を選択します。[プロパティ] ダイアログの左側のバーで、[J2EE Module Dependencies] をクリックします。次の図の例では、プロジェクトが 3 つあります。そのうちの 1 つはすでに EAR に追加されており、残りの 2 つはまだ追加されていません。
- EAR プロジェクトに追加する各プロジェクトの名前の横にあるボックスをチェックします。[OK] をクリックすると、それらのプロジェクトが EAR に追加されます。
ユーティリティ プロジェクトや EJB プロジェクトを EAR に追加しても、同じ EAR 内の Web プロジェクトから利用できるようにはなりません。EAR 内の Web プロジェクトにユーティリティ プロジェクトや EJB プロジェクトを追加するには、それらのプロジェクトに依存するすべてのプロジェクトについて次の手順を実行する必要があります。
Web プロジェクトにユーティリティ プロジェクトや EJB プロジェクトを追加する
EJB プロジェクトとユーティリティ プロジェクトには、Web サービス プロジェクトや動的 Web プロジェクトから使用するコードが含まれています。一般的な選択肢としては、EJB プロジェクトとユーティリティ プロジェクトを、EAR 内のすべてのプロジェクトで利用できるようにすることが考えられます。この場合、実際的な面では以下を意味します。
- ユーティリティ プロジェクトは、ライブラリにコンパイルされて EAR の APP-INF/lib フォルダに格納され、EAR 内のすべてのプロジェクトによって共有される。これらのライブラリは、各 Web プロジェクトのビルド パスに挿入される。
- EJB は実行時にロードされ、エンタープライズ アプリケーション内のすべての Web プロジェクトや Web モジュールで利用できるようになる。
しかし、プロジェクト依存関係が正しくコンフィグレーションされていないと、ユーティリティ プロジェクトと EJB プロジェクトをビルド時に利用することはできません。
ユーティリティ プロジェクトと EJB プロジェクトを EAR 内のすべてのプロジェクトで利用できるように指定するには、ユーティリティ プロジェクトや EJB プロジェクトを作成する際に、作成ウィザードの 3 番目の画面で [EAR '(EAR プロジェクト名)' 内のすべての Web プロジェクトにこのプロジェクトへの依存関係を追加します] チェック ボックスをチェックするのがもっとも単純な方法です。これはデフォルトの設定です。
ユーティリティ プロジェクトや EJB プロジェクトの作成時にプロジェクト依存関係を設定しなかった場合でも、これらのプロジェクトを EAR 内の Web サービス プロジェクトや動的 Web プロジェクトから利用できるようにすることは可能です。その場合は、Web プロジェクトごとに次の手順を実行します。
- [プロジェクト・エクスプローラ] ビューで Web サービスまたは動的 Web プロジェクトの名前を右クリックし、コンテキスト メニューから [プロパティ] を選択します。[プロパティ] ダイアログの左側のバーで、[J2EE Module Dependencies] をクリックします。[J2EE モジュール] タブが選択されていることを確認してください。次の図の例では、現在のプロジェクトに追加されていない新しいユーティリティ プロジェクトが 1 つあります。
- 追加する各プロジェクトの名前の横にあるボックスをチェックします。[OK] をクリックすると、ユーティリティ プロジェクトまたは EJB プロジェクトがその Web プロジェクトに追加されます。
なお、[EJB クライアント JAR を持つ EJB JAR を参照します。] ボックスは、Workshop プロジェクトには影響しません。
ユーティリティ プロジェクトや EJB プロジェクトを他のユーティリティ/EJB プロジェクトで利用できるようにする
ユーティリティ プロジェクトや EJB プロジェクトは、相互に依存させることもできます。そのように設定するには、次の手順に従います。
- [プロジェクト・エクスプローラ] ビューでユーティリティ プロジェクトまたは EJB プロジェクトを右クリックし、コンテキスト メニューから [プロパティ] を選択します。[プロパティ] ダイアログの左側のバーで、[J2EE Module Dependencies] をクリックします。[J2EE モジュール] タブが選択されていることを確認してください。次の図の例では、現在のプロジェクトに追加されていないユーティリティ プロジェクトが 1 つあります。
追加する各プロジェクトの名前の横にあるボックスをチェックします。[OK] をクリックすると、選択したユーティリティ プロジェクトまたは EJB プロジェクトが、現在のユーティリティ プロジェクトまたは EJB プロジェクトに追加されます。
なお、[EJB クライアント JAR を持つ EJB JAR を参照します。] ボックスは、Workshop プロジェクトには影響しません。
EJB プロジェクトやユーティリティ プロジェクトの間の依存関係が循環しないよう注意してください。
アプリケーションとプロジェクト
ビルド プロセスについて
アプリケーションのデプロイメント、実行、デバッグ