5.2.4 Enterprise Beanのアノテーション指定

EJBコンテナでは,Enterprise BeanがDDを持たない場合,またはDD(ejb-jar.xmlバージョン2.1)を持つ場合に,Enterprise Beanにアノテーションを指定できます。

アノテーションとは,ソースコードにクラスやメソッドの付加情報などを埋め込むための記述方式です。アノテーションを使用することで,従来,DD(ejb-jar.xml)で指定していた情報を,Enterprise Beanのソースコード上に指定できます。アノテーションを使用する場合のメリットを次に示します。

DIについては,「5.2.5 DIの使用」を参照してください。

ここでは,指定できるアノテーションや,アノテーションを指定した場合のEnterprise Beanの実装について説明します。

<この項の構成>
(1) 指定できるアノテーション
(2) Enterprise Beanの実装
(3) 注意事項

(1) 指定できるアノテーション

指定できるアノテーションは,DD(ejb-jar.xmlバージョン2.1)がある場合と,DDがない場合とで異なります。

アプリケーションまたはリソースの属性取得(cjgetappprop,cjgetrespropコマンド),または属性設定(cjsetappprop,cjsetrespropコマンド)を実行した場合,アノテーションの要素は表示できますが,更新はできません。DDの要素は表示,更新できます。展開ディレクトリ形式のアプリケーションでは,アノテーションの更新ができます。更新したアノテーションは,次のタイミングで反映されます。

ただし,これらの方法で更新できるアノテーションと更新できないアノテーションがあります。DDがある場合,またはDDがない場合に指定できるアノテーションと,更新できるアノテーションの一覧を次の表に示します。

表5-8 指定できるアノテーション一覧

アノテーション名指定できるアノテーション更新できるアノテーション
DDがある場合DDがない場合
@PostConstruct×
@PreDestroy×
@Resource
@Resources
@RunAs×
@DeclareRoles×
@RolesAllowed×
@PermitAll×
@DenyAll×
@Stateless×
@Stateful×
@Init×
@Remove×
@Remote×
@Local×
@RemoteHome×
@LocalHome×
@TransactionManagement×
@TransactionAttribute×
@PostActivate×
@PrePassivate×
@Interceptors×
@AroundInvoke×
@ExcludeDefautInterceptors×
@ExcludeClassInterceptors×
@Timeout×
@ApplicationException×
@EJB
@EJBs

(凡例) ◎:指定できる ×:指定できない ○:更新できる -:更新できない

注※ @RemoteHomeまたは@LocalHomeアノテーションを使用してホームインタフェースを指定する場合,指定されたホームインタフェースのcreateメソッドの戻り値がコンポーネントインタフェースとみなされます。


(2) Enterprise Beanの実装

アノテーションは,Session Beanで指定できます。アノテーションを指定して,Stateless Session Bean,またはStateful Session Beanを実装する場合について説明します。

(a) Stateless Session Bean

コールバック,またはメソッドが呼び出されるタイミングについては,「5.2.3 Enterprise Beanのライフサイクル」を参照してください。

(b) Stateful Session Bean

コールバック,またはメソッドが呼び出されるタイミングについては,「5.2.3 Enterprise Beanのライフサイクル」を参照してください。

(3) 注意事項

アノテーションを指定した場合の注意事項を説明します。