ここでは,アノテーション参照抑止機能の目的と適用範囲について説明します。
アノテーション参照抑止機能は,J2EEアプリケーション中のアノテーションの参照(解析処理)を実施するかどうかを設定する機能です。モジュール内のアノテーションの有無を判断するためには,アプリケーションの解析が必要です。しかし,すべてのアプリケーションを解析すると,アノテーションを使用していないアプリケーションの場合,不要なオーバーヘッドが発生します。また,リソースやほかのアプリケーションを参照するアプリケーションの場合,アノテーション解析時にクラスファイルの参照エラーが発生して,デプロイに失敗することがあります。
アノテーション参照抑止機能を使用すると,アノテーションを使用しない場合に,アノテーションの解析処理を抑止することができます。
アノテーションの参照を抑止する範囲および抑止方法は,EJB 2.1またはServlet 2.4の場合と,Servlet 2.5の場合で異なります。なお,アプリケーションサーバでは,EJB 3.0の場合,アノテーション参照抑止機能は使用できません。
アノテーション参照抑止機能の適用範囲は,アノテーションを含むモジュールの種類によって異なります。
アノテーション抑止機能の適用範囲を次の表に示します。
表11-11 アノテーション抑止機能の適用範囲
モジュールのバージョン | DDの有無と指定内容 | 参照抑止の範囲 | |||
---|---|---|---|---|---|
J2EEサーバ単位 | モジュール単位 | ||||
EJB | 1.1,2.0 | DDあり(metadata-complete属性なし) | - | - | |
2.1 | DDあり(metadata-complete属性なし) | ○※1 | - | ||
3.0 | DDなし | × | ○ | ||
DDあり(metadata-complete属性あり) | 省略 | × | ○ | ||
指定あり | × | ○※2 | |||
Servlet | 2.2,2.3 | DDあり(metadata-complete属性なし) | - | - | |
2.4 | DDあり(metadata-complete属性なし) | ○※1 | - | ||
2.5 | DDなし | × | ○ | ||
DDあり(metadata-complete属性あり) | 省略 | × | ○ | ||
指定あり | × | ○ |
(凡例)○:有効になる ×:使用できない -:該当しない
注※1 有効にすると,アノテーションを記述したEJB 2.1またはServlet 2.4のモジュールを含むJ2EEアプリケーションは使用できなくなります。
注※2 値にtrueは指定できません。trueを指定した場合,J2EEサーバへのアプリケーションのインポートおよびリデプロイに失敗します。
モジュール単位の設定はDDのmetadata-complete属性で設定します。J2EEサーバ単位の設定は,ejbserver.deploy.applications.metadata_completeプロパティで設定します。モジュール単位の設定とJ2EEサーバ単位の設定の組み合わせた場合にアノテーションが参照されるかどうかを次の表に示します。
表11-12 J2EEサーバ単位の設定とモジュール単位の設定の組み合わせ
モジュールのバージョン | モジュール単位の設定 | J2EEサーバ単位の設定 | |||
---|---|---|---|---|---|
プロパティの指定なし | ejbserver.deploy.applications.metadata_completeプロパティ | ||||
false | true | ||||
EJB 2.1,Servlet 2.4 | 設定できない | ○ | ○ | × | |
EJB 3.0 | DDなし | ○ | ○ | ○ | |
DDあり(metadata-complete属性あり) | 省略 | ○ | ○ | ○ | |
false | ○ | ○ | ○ | ||
true | -※ | -※ | -※ | ||
Servlet 2.5 | DDなし | ○ | ○ | ○ | |
DDあり(metadata-complete属性あり) | 省略 | ○ | ○ | ○ | |
false | ○ | ○ | ○ | ||
true | × | × | × |
(凡例)○:参照する ×:参照しない -:対象外
注※ DDのmetadata-complete属性にtrueを指定したEJB 3.0を含むアプリケーションは,インポートおよびリデプロイに失敗します。