Hitachi

Cosminexus V11 アプリケーションサーバ 機能解説 基本・開発編(EJBコンテナ)


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

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

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

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

〈この項の構成〉

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

デフォルトインターセプタ,およびクラスレベルインターセプタの呼び出し抑止の定義が指定されている場合の,インターセプタの実行順序を次の表に示します。この表では,各項番の「<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. アノテーション

(凡例)

デフォルト:デフォルトインターセプタ

クラスレベル:クラスレベルインターセプタ

メソッドレベル:メソッドレベルインターセプタ

インターセプタメソッド:Beanクラスに指定されたインターセプタメソッド

○:<interceptor-order>タグを使用して実行順序を指定している。

×:<interceptor-order>タグを使用して実行順序を指定していない。

−:実行されない。

DD:DDで指定されたインターセプタが実行される。

アノテーション:アノテーションで指定されたインターセプタが実行される。

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

デフォルトインターセプタの呼び出し抑止の定義が指定されている場合の,インターセプタの実行順序を次の表に示します。この表では,各項番の「<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. アノテーション

(凡例)

デフォルト:デフォルトインターセプタ

クラスレベル:クラスレベルインターセプタ

メソッドレベル:メソッドレベルインターセプタ

インターセプタメソッド:Beanクラスに指定されたインターセプタメソッド

○:<interceptor-order>タグを使用して実行順序を指定している。

×:<interceptor-order>タグを使用して実行順序を指定していない。

−:実行されない。

DD:DDで指定されたインターセプタが実行される。

アノテーション:アノテーションで指定されたインターセプタが実行される。

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

クラスレベルインターセプタの呼び出し抑止の定義が指定されている場合の,インターセプタの実行順序を次の表に示します。この表では,各項番の「<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. アノテーション

(凡例)

デフォルト:デフォルトインターセプタ

クラスレベル:クラスレベルインターセプタ

メソッドレベル:メソッドレベルインターセプタ

インターセプタメソッド:Beanクラスに指定されたインターセプタメソッド

○:<interceptor-order>タグを使用して実行順序を指定している。

×:<interceptor-order>タグを使用して実行順序を指定していない。

−:実行されない。

DD: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. アノテーション

(凡例)

デフォルト:デフォルトインターセプタ

クラスレベル:クラスレベルインターセプタ

メソッドレベル:メソッドレベルインターセプタ

インターセプタメソッド:Beanクラスに指定されたインターセプタメソッド

○:<interceptor-order>タグを使用して実行順序を指定している。

×:<interceptor-order>タグを使用して実行順序を指定していない。

−:実行されない。

DD:DDで指定されたインターセプタが実行される。

アノテーション:アノテーションで指定されたインターセプタが実行される。