Hitachi

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


2.15.2 アノテーションまたはDDでの定義

インターセプタは,アノテーションで指定するか,DDまたは属性ファイルを使用してEJB-JARの属性として設定します。

〈この項の構成〉

(1) デフォルトインターセプタの定義

デフォルトインターセプタは,EJB-JARに含まれるすべてのコンポーネントに適用されるインターセプタです。ここでは,DDを使用したデフォルトインターセプタを設定する方法,および実行環境でEJB-JAR属性ファイルを使用してデフォルトインターセプタを設定する方法について説明します。

DDで,<ejb-jar>タグ下の<interceptor-binding>タグを記述することで,デフォルトインターセプタの情報を指定できます。

<interceptor-binding>タグ下に指定する要素を次の表に示します。

表2‒46 DDを使用する場合に<interceptor-binding>タグ下に指定する要素(デフォルトインターセプタ)

タグ名

必須/任意

指定内容

<description>

任意

任意の情報を指定します。

<ejb-name>

必須

"*"(ワイルドカード)を指定します。

<interceptor-class>

必須

要素にインターセプタクラスのクラス名を指定します。

これ以外のタグで指定した要素の値は,反映されません。

デフォルトインターセプタを使用する場合のDDの記述例を次に示します。

<ejb-jar>
 …(略)…
  <assembly-descriptor>
   <interceptor-binding>
     <description xml:lang="en">Default Interceptor</description>
     <ejb-name>*</ejb-name>
     <interceptor-class>test.ejb30.MyDefaultIC</interceptor-class>
     <interceptor-class>test.ejb30.MyDefaultIC2</interceptor-class>
   </interceptor-binding>
  </assembly-descriptor>
 …(略)…
</ejb-jar>

この記述例では,デフォルトインターセプタクラスとして,「test.ejb30.MyDefaultIC」と「test.ejb30.MyDefaultIC2」の二つのクラスを指定しています。

(2) クラスレベルインターセプタの定義

クラスレベルインターセプタは,指定したクラスに適用されるインターセプタです。ここでは,DDを使用したクラスレベルインターセプタを設定する方法,および実行環境でEJB-JAR属性ファイルを使用してクラスレベルインターセプタを設定する方法について説明します。

DDで,<ejb-jar>タグ下の<interceptor-binding>タグを記述することで,クラスレベルインターセプタの情報を指定できます。

<interceptor-binding>タグ下に指定する要素を次の表に示します。

表2‒47 DDを使用する場合に<interceptor-binding>タグ下に指定する要素(クラスレベルインターセプタ)

タグ名

必須/任意

指定内容

<ejb-name>

必須

EJB名を指定します。

<interceptor-class>

必須

要素にインターセプタクラスのクラス名を指定します。

なお,<method>タグには要素を指定しません。

(3) メソッドレベルインターセプタの定義

メソッドレベルインターセプタは,指定したビジネスメソッドに適用されるインターセプタです。ここでは,DDを使用したメソッドレベルインターセプタを設定する方法,および実行環境でEJB-JAR属性ファイルを使用してメソッドレベルインターセプタを設定する方法について説明します。

DDで,<ejb-jar>タグ下の<interceptor-binding>タグを記述することで,メソッドレベルインターセプタの情報を指定できます。

<interceptor-binding>タグ下に指定する要素を次の表に示します。

表2‒48 DDを使用する場合に<interceptor-binding>タグ下に指定する要素(メソッドレベルインターセプタ)

タグ名

必須/任意

指定内容

<ejb-name>

必須

EJB名を指定します。

<interceptor-class>

必須

要素にインターセプタクラスのクラス名を指定します。

<method-name>

必須

要素にメソッド名を指定します。

<method-params>

任意

要素にメソッドの引数リストを指定します。

<method-name>タグにビジネスメソッドを指定し,<method-params>タグの指定値を省略した場合,または<method-params>タグに引数リストを指定した場合の,メソッドレベルインターセプタが定義されるビジネスメソッドの範囲を次の表に示します。なお,<method-name>タグに"*"(ワイルドカード)を指定した場合,メソッドレベルインターセプタの定義は使用されません。

表2‒49 メソッドレベルインターセプタが定義されるビジネスメソッドの範囲

<method-params>タグの指定値

メソッドレベルインターセプタが定義されるビジネスメソッドの範囲

省略する

メソッド名が完全一致したすべてのビジネスメソッドに対してインターセプタが定義されます。

引数リストを指定する

メソッド名と引数リストが完全一致したビジネスメソッドに対してインターセプタが定義されます。

引数リストを指定した場合,アノテーションで指定した情報をDDで上書きできます。