インターセプタの実行順序は,デフォルトでは次の規則に従って決定されます。
なお,ここで示したデフォルトのインターセプタの実行順序は,次の方法で変更できます。
これらの規則と,DDによるアノテーションの上書きの規則を組み合わせた実行順序を(1)~(4)で説明します。DDによるアノテーションの上書きについては,マニュアル「Cosminexus アプリケーションサーバ 機能解説 基本・開発編(コンテナ共通機能)」の「11.6.2 DDによるアノテーションの上書き」を参照してください。
デフォルトインターセプタ,およびクラスレベルインターセプタの呼び出し抑止の定義が指定されている場合の,インターセプタの実行順序を次の表に示します。この表では,各項番の「<interceptor-order>の使用」に○×で示した組み合わせの場合の実行順序を,「インターセプタの実行順序」のDDまたはアノテーションの表記の前にある数字で示しています。
表2-51 インターセプタの実行順序(デフォルトインターセプタ,およびクラスレベルインターセプタの呼び出し抑止の定義が指定されている場合)
項番 | <interceptor-order>の使用 | インターセプタの実行順序 | |||||
---|---|---|---|---|---|---|---|
デフォルト | クラスレベル | メソッドレベル | デフォルト | クラスレベル | メソッドレベル | インターセプタメソッド | |
1 | ○ | ○ | ○ | - | - | 1. DD | 2. アノテーション |
2 | ○ | ○ | × | - | - | 1. アノテーション 2. DD | 3. アノテーション |
3 | ○ | × | ○ | - | - | 1. DD | 2. アノテーション |
4 | ○ | × | × | - | - | 1. アノテーション 2. DD | 3. アノテーション |
5 | × | ○ | ○ | - | - | 1. DD | 2. アノテーション |
6 | × | ○ | × | - | - | 1. アノテーション 2. DD | 3. アノテーション |
7 | × | × | ○ | - | - | 1. DD | 2. アノテーション |
8 | × | × | × | - | - | 1. アノテーション 2. DD | 3. アノテーション |
デフォルトインターセプタの呼び出し抑止の定義が指定されている場合の,インターセプタの実行順序を次の表に示します。この表では,各項番の「<interceptor-order>の使用」に○×で示した組み合わせの場合の実行順序を,「インターセプタの実行順序」のDDまたはアノテーションの表記の前にある数字で示しています。
表2-52 インターセプタの実行順序(デフォルトインターセプタの呼び出し抑止の定義が指定されている場合)
項番 | <interceptor-order>の使用 | インターセプタの実行順序 | |||||
---|---|---|---|---|---|---|---|
デフォルト | クラスレベル | メソッドレベル | デフォルト | クラスレベル | メソッドレベル | インターセプタメソッド | |
1 | ○ | ○ | ○ | - | - | 1. DD | 2. アノテーション |
2 | ○ | ○ | × | - | 1. DD | 2. アノテーション 3. DD | 4. アノテーション |
3 | ○ | × | ○ | - | - | 1. DD | 2. アノテーション |
4 | ○ | × | × | - | 1. アノテーション 2. DD | 3. アノテーション 4. DD | 5. アノテーション |
5 | × | ○ | ○ | - | - | 1. DD | 2. アノテーション |
6 | × | ○ | × | - | 1. DD | 2. アノテーション 3. DD | 4. アノテーション |
7 | × | × | ○ | - | - | 1. DD | 2. アノテーション |
8 | × | × | × | - | 1. アノテーション 2. DD | 3. アノテーション 4. DD | 5. アノテーション |
クラスレベルインターセプタの呼び出し抑止の定義が指定されている場合の,インターセプタの実行順序を次の表に示します。この表では,各項番の「<interceptor-order>の使用」に○×で示した組み合わせの場合の実行順序を,「インターセプタの実行順序」のDDまたはアノテーションの表記の前にある数字で示しています。
表2-53 インターセプタの実行順序(クラスレベルインターセプタの呼び出し抑止の定義が指定されている場合)
項番 | <interceptor-order>の使用 | インターセプタの実行順序 | |||||
---|---|---|---|---|---|---|---|
デフォルト | クラスレベル | メソッドレベル | デフォルト | クラスレベル | メソッドレベル | インターセプタメソッド | |
1 | ○ | ○ | ○ | - | - | 1. DD | 2. アノテーション |
2 | ○ | ○ | × | 1. DD | - | 2. アノテーション 3. DD | 4. アノテーション |
3 | ○ | × | ○ | - | - | 1. DD | 2. アノテーション |
4 | ○ | × | × | 1. DD | - | 2. アノテーション 3. DD | 4. アノテーション |
5 | × | ○ | ○ | - | - | 1. DD | 2. アノテーション |
6 | × | ○ | × | 1. DD | - | 2. アノテーション 3. DD | 4. アノテーション |
7 | × | × | ○ | - | - | 1. DD | 2. アノテーション |
8 | × | × | × | 1. DD | - | 2. アノテーション 3. DD | 4. アノテーション |
上位レベルインターセプタの呼び出し抑止の定義が指定されていない場合の,インターセプタの実行順序を次の表に示します。この表では,各項番の「<interceptor-order>の使用」に○×で示した組み合わせの場合の実行順序を,「インターセプタの実行順序」のDDまたはアノテーションの表記の前にある数字で示しています。
表2-54 インターセプタの実行順序(上位レベルインターセプタの呼び出し抑止の定義が指定されていない場合)
項番 | <interceptor-order>の使用 | インターセプタの実行順序 | |||||
---|---|---|---|---|---|---|---|
デフォルト | クラスレベル | メソッドレベル | デフォルト | クラスレベル | メソッドレベル | インターセプタメソッド | |
1 | ○ | ○ | ○ | - | - | 1. DD | 2. アノテーション |
2 | ○ | ○ | × | - | 1. DD | 2. アノテーション 3. DD | 4. アノテーション |
3 | ○ | × | ○ | - | - | 1. DD | 2. アノテーション |
4 | ○ | × | × | 1. DD | 2. アノテーション 3. DD | 4. アノテーション 5. DD | 6. アノテーション |
5 | × | ○ | ○ | - | - | 1. DD | 2. アノテーション |
6 | × | ○ | × | - | 1. DD | 2. アノテーション 3. DD | 4. アノテーション |
7 | × | × | ○ | - | - | 1. DD | 2. アノテーション |
8 | × | × | × | 1. DD | 2. アノテーション 3. DD | 4. アノテーション 5. DD | 6. アノテーション |