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