3.7. クラスローディングとサブデプロイメント
3.7.1. エンタープライズアーカイブのモジュールおよびクラスロード リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
エンタープライズアーカイブ (EAR) は、JAR または WAR デプロイメントのように、単一モジュールとしてロードされません。これらは、複数の一意のモジュールとしてロードされます。
以下のルールによって、EAR に存在するモジュールが決定されます。
- 各 WAR および EJB JAR サブデプロイメントはモジュールです。
- EAR アーカイブのルートにある
lib/
ディレクトリーの内容はモジュールです。これは、親モジュールと呼ばれます。
これらのモジュールの動作は、以下の暗黙的な依存関係を持つ他のモジュールと同じになります。
- WAR サブデプロイメントでは、親モジュールとすべての EJB JAR サブデプロイメントに暗黙的な依存関係が存在します。
- EJB JAR サブデプロイメントでは、親モジュールと他のすべての EJB JAR サブデプロイメントに暗黙的な依存関係が存在します。
重要
サブデプロイメントでは、WAR サブデプロイメントに暗黙的な依存関係が存在しません。他のモジュールと同様に、サブデプロイメントは、別のサブデプロイメントの明示的な依存関係で設定できます。
JBoss EAP 6 では、サブデプロイメントクラスローダーの分離がデフォルトで無効になるため、上記の暗黙的な依存関係が発生します。
サブデプロイメントクラスローダーの分離は、厳密な互換性が必要な場合に有効にできます。これは、単一の EAR デプロイメントまたはすべての EAR デプロイメントに対して有効にできます。Java EE 6 の仕様では、依存関係が各サブデプロイメントの
MANIFEST.MF
ファイルの Class-Path
エントリーとして明示的に宣言されている場合を除き、移植可能なアプリケーションがお互いにアクセスできるサブデプロイメントに依存しないことが推奨されます。