Cosminexus V9 アプリケーションサーバ 機能解説 基本・開発編(コンテナ共通機能)
アノテーションに定義した情報は,DDで上書きできます。DDによって上書きできるのは,Servlet 2.5以降およびEJB3.0以降のモジュールに定義されたアノテーションです。
アノテーションを上書きする方法には,次の2種類があります。
アノテーション | 属性 | メッセージ |
---|---|---|
@WebServlet | name属性 | KDJE42397-W |
@WebFilter | filtername属性 | KDJE42398-W |
上書き方法は,対象となるDDの要素および子要素が複数回出現できる要素かどうかによって異なります。
ここでは,DDによるアノテーションの上書き規則を次の四つのパターンに分けて説明します。
表12-16 DDによるアノテーションの上書き規則のパターン
パターン | アノテーションと対応するDDの要素の出現回数 | キーの有無 | DDの子要素の出現回数 | 参照先 |
---|---|---|---|---|
パターン1 | 0回または1回 | キーがない場合 | − | (1) |
パターン2 | 0回以上または1回以上 | キーがない場合 | − | (2) |
パターン3 | キーがある場合 | 0回または1回 | (3) | |
パターン4 | 0回以上または1回以上 | (4) |
(凡例)−:キーの有無による違いがない
アノテーションとDDの要素の対応,各要素のキーの有無,およびキーとなる要素については,標準仕様を参照してください。
それぞれのパターンについて説明します。
出現回数が0回または1回出現する要素の場合は,アノテーションに対応する要素がDDに定義されているかどうかで上書きするかどうかが決まります。キーの値は関係ありません。
出現回数が0回または1回の要素の例を次の図に示します。キーがある場合の例です。
図12-3 0回または1回出現する要素の例
DDとアノテーションの両方の定義が有効になります。
キーがない場合の例を次の図に示します。「@DeclareRoles」で定義したセキュリティロールに加えて,DDで新しいセキュリティロールを定義します。
図12-4 キーがない場合の例
この例では,アノテーションで「admin」「adminadmin」および「adminadminadmin」の三つのセキュリティロールを定義しています。これに加えて,DDで定義した「admin2」が追加されてマージ後のDDに反映されます。なお,「adminadmin」はアノテーションおよびDDの両方で定義されているセキュリティロールです。アプリケーションは,マージ後のDDが定義されたものとして動作します。
なお,このパターンに該当する場合,アノテーションの定義はサーバ管理コマンドで変更できません。アノテーションに対応する情報を属性ファイルで削除・変更してcjsetapppropコマンドを実行しても,そのあとでcjgetapppropコマンドによって取得した属性ファイルには,アノテーションで定義された情報が出力されます。
DDの要素内の子要素が0回または1回出現する場合は,キーの値によって上書きの方法が異なります。
図12-5 子要素が0回または1回出現する例
この例では,「res1」の環境エントリの値をアノテーションで定義した「TEST」からDDで定義した「RUNNING」に変更します。アプリケーションは,マージ後のDDが定義されたものとして動作します。
DDの要素内の子要素が0回以上または1回以上出現する場合は,キーの値によって上書きの方法が異なります。
図12-6 子要素が0回以上または1回以上出現する例
この例では,アノテーションの定義に対して,DDで定義した要素「injection-target」が追加されます。アプリケーションは,マージ後のDDが定義されたものとして動作します。
All Rights Reserved. Copyright (C) 2012, 2015, Hitachi, Ltd.