2.15.4 インターセプタの実行順序

インターセプタの実行順序は,デフォルトでは次の規則に従って決定されます。

なお,ここで示したデフォルトのインターセプタの実行順序は,次の方法で変更できます。

これらの規則と,DDによるアノテーションの上書きの規則を組み合わせた実行順序を(1)~(4)で説明します。DDによるアノテーションの上書きについては,マニュアル「Cosminexus アプリケーションサーバ 機能解説 基本・開発編(コンテナ共通機能)」の「11.6.2 DDによるアノテーションの上書き」を参照してください。

<この項の構成>
(1) デフォルトインターセプタ,およびクラスレベルインターセプタの呼び出し抑止の定義が指定されている場合
(2) デフォルトインターセプタの呼び出し抑止の定義が指定されている場合
(3) クラスレベルインターセプタの呼び出し抑止の定義が指定されている場合
(4) 上位レベルインターセプタの呼び出し抑止の定義が指定されていない場合

(1) デフォルトインターセプタ,およびクラスレベルインターセプタの呼び出し抑止の定義が指定されている場合

デフォルトインターセプタ,およびクラスレベルインターセプタの呼び出し抑止の定義が指定されている場合の,インターセプタの実行順序を次の表に示します。この表では,各項番の「<interceptor-order>の使用」に○×で示した組み合わせの場合の実行順序を,「インターセプタの実行順序」のDDまたはアノテーションの表記の前にある数字で示しています。

表2-51 インターセプタの実行順序(デフォルトインターセプタ,およびクラスレベルインターセプタの呼び出し抑止の定義が指定されている場合)

項番<interceptor-order>の使用インターセプタの実行順序
デフォルトクラスレベルメソッドレベルデフォルトクラスレベルメソッドレベルインターセプタメソッド
11. DD2. アノテーション
2×1. アノテーション
2. DD
3. アノテーション
3×1. DD2. アノテーション
4××1. アノテーション
2. DD
3. アノテーション
5×1. DD2. アノテーション
6××1. アノテーション
2. DD
3. アノテーション
7××1. DD2. アノテーション
8×××1. アノテーション
2. DD
3. アノテーション
(凡例)
デフォルト:デフォルトインターセプタ
クラスレベル:クラスレベルインターセプタ
メソッドレベル:メソッドレベルインターセプタ
インターセプタメソッド:Beanクラスに指定されたインターセプタメソッド
○:<interceptor-order>タグを使用して実行順序を指定している。
×:<interceptor-order>タグを使用して実行順序を指定していない。
-:実行されない。
DD:DDで指定されたインターセプタが実行される。
アノテーション:アノテーションで指定されたインターセプタが実行される。

(2) デフォルトインターセプタの呼び出し抑止の定義が指定されている場合

デフォルトインターセプタの呼び出し抑止の定義が指定されている場合の,インターセプタの実行順序を次の表に示します。この表では,各項番の「<interceptor-order>の使用」に○×で示した組み合わせの場合の実行順序を,「インターセプタの実行順序」のDDまたはアノテーションの表記の前にある数字で示しています。

表2-52 インターセプタの実行順序(デフォルトインターセプタの呼び出し抑止の定義が指定されている場合)

項番<interceptor-order>の使用インターセプタの実行順序
デフォルトクラスレベルメソッドレベルデフォルトクラスレベルメソッドレベルインターセプタメソッド
11. DD2. アノテーション
2×1. DD2. アノテーション
3. DD
4. アノテーション
3×1. DD2. アノテーション
4××1. アノテーション
2. DD
3. アノテーション
4. DD
5. アノテーション
5×1. DD2. アノテーション
6××1. DD2. アノテーション
3. DD
4. アノテーション
7××1. DD2. アノテーション
8×××1. アノテーション
2. DD
3. アノテーション
4. DD
5. アノテーション
(凡例)
デフォルト:デフォルトインターセプタ
クラスレベル:クラスレベルインターセプタ
メソッドレベル:メソッドレベルインターセプタ
インターセプタメソッド:Beanクラスに指定されたインターセプタメソッド
○:<interceptor-order>タグを使用して実行順序を指定している。
×:<interceptor-order>タグを使用して実行順序を指定していない。
-:実行されない。
DD:DDで指定されたインターセプタが実行される。
アノテーション:アノテーションで指定されたインターセプタが実行される。

(3) クラスレベルインターセプタの呼び出し抑止の定義が指定されている場合

クラスレベルインターセプタの呼び出し抑止の定義が指定されている場合の,インターセプタの実行順序を次の表に示します。この表では,各項番の「<interceptor-order>の使用」に○×で示した組み合わせの場合の実行順序を,「インターセプタの実行順序」のDDまたはアノテーションの表記の前にある数字で示しています。

表2-53 インターセプタの実行順序(クラスレベルインターセプタの呼び出し抑止の定義が指定されている場合)

項番<interceptor-order>の使用インターセプタの実行順序
デフォルトクラスレベルメソッドレベルデフォルトクラスレベルメソッドレベルインターセプタメソッド
11. DD2. アノテーション
2×1. DD2. アノテーション
3. DD
4. アノテーション
3×1. DD2. アノテーション
4××1. DD2. アノテーション
3. DD
4. アノテーション
5×1. DD2. アノテーション
6××1. DD2. アノテーション
3. DD
4. アノテーション
7××1. DD2. アノテーション
8×××1. DD2. アノテーション
3. DD
4. アノテーション
(凡例)
デフォルト:デフォルトインターセプタ
クラスレベル:クラスレベルインターセプタ
メソッドレベル:メソッドレベルインターセプタ
インターセプタメソッド:Beanクラスに指定されたインターセプタメソッド
○:<interceptor-order>タグを使用して実行順序を指定している。
×:<interceptor-order>タグを使用して実行順序を指定していない。
-:実行されない。
DD:DDで指定されたインターセプタが実行される。
アノテーション:アノテーションで指定されたインターセプタが実行される。

(4) 上位レベルインターセプタの呼び出し抑止の定義が指定されていない場合

上位レベルインターセプタの呼び出し抑止の定義が指定されていない場合の,インターセプタの実行順序を次の表に示します。この表では,各項番の「<interceptor-order>の使用」に○×で示した組み合わせの場合の実行順序を,「インターセプタの実行順序」のDDまたはアノテーションの表記の前にある数字で示しています。

表2-54 インターセプタの実行順序(上位レベルインターセプタの呼び出し抑止の定義が指定されていない場合)

項番<interceptor-order>の使用インターセプタの実行順序
デフォルトクラスレベルメソッドレベルデフォルトクラスレベルメソッドレベルインターセプタメソッド
11. DD2. アノテーション
2×1. DD2. アノテーション
3. DD
4. アノテーション
3×1. DD2. アノテーション
4××1. DD2. アノテーション
3. DD
4. アノテーション
5. DD
6. アノテーション
5×1. DD2. アノテーション
6××1. DD2. アノテーション
3. DD
4. アノテーション
7××1. DD2. アノテーション
8×××1. DD2. アノテーション
3. DD
4. アノテーション
5. DD
6. アノテーション
(凡例)
デフォルト:デフォルトインターセプタ
クラスレベル:クラスレベルインターセプタ
メソッドレベル:メソッドレベルインターセプタ
インターセプタメソッド:Beanクラスに指定されたインターセプタメソッド
○:<interceptor-order>タグを使用して実行順序を指定している。
×:<interceptor-order>タグを使用して実行順序を指定していない。
-:実行されない。
DD:DDで指定されたインターセプタが実行される。
アノテーション:アノテーションで指定されたインターセプタが実行される。