Cosminexus V9 アプリケーションサーバ 機能解説 基本・開発編(コンテナ共通機能)
ユーザは必要に応じてコールバックメソッドを実装します。エンティティクラスやマップドスーパークラス内に実装するコールバックメソッドとエンティティリスナクラスのコールバックメソッドでコールバックメソッドのシグネチャは異なります。
エンティティクラスやマップドスーパークラスで定義されるコールバックメソッドは次に示すシグネチャになります。
また,エンティティリスナクラスで定義されるコールバックメソッドは次に示すシグネチャになります。
引数のObjectには,コールバックメソッドが実行されるエンティティのインスタンスを指定します。
- <この項の構成>
- (1) コールバックメソッド使用時の注意事項
- (2) コールバックメソッドに適用されるルール
コールバックメソッドについては,次に示す注意事項があります。これらの条件を満たさない場合,アプリケーションの開始時に例外が発生して,アプリケーションの開始に失敗します。
- publicで引数がないコンストラクタを持たなければなりません。
- コールバックメソッドではpublic,private,protected,およびパッケージレベルのアクセスができます。ただし,staticやfinalは使用できません。
- 一つのクラスが同じライフサイクルイベントに対して複数のライフサイクルコールバックメソッドを持つことはできません。ただし,同じメソッドが複数のコールバックイベントで使用されることがあります。
コールバックメソッドについては次に示すルールが適用されます。
- コールバックメソッドでは,未チェックまたは実行時例外の送出が許可されています。トランザクション中に実行したコールバックメソッドでスローされた実行時例外は,トランザクションをロールバックさせます。コールバックメソッドが複数指定されている場合,実行時例外がスローされたあとには残りのコールバックメソッドは実行されません。
- コールバックメソッドでは,JNDI,JDBC,JMS,Enterprise Beanを実行できます。
- コールバックメソッドで次の操作をしないでください。
- EntityManagerを呼び出す。
- クエリ操作を実行する。
- ほかのエンティティインスタンスにアクセスする。
- リレーションシップを更新する。
このような方法で使用した場合,動作を保証しません。
- Java EE環境でコールバックメソッドが呼び出された場合,エンティティのコールバックリスナは呼び出すコンポーネントのネーミングコンテキストを共有します。また,エンティティのコールバックメソッドは,コールバックメソッドが呼び出された時点の呼び出し元コンポーネントのトランザクションとセキュリティコンテキストで呼び出されます。
All Rights Reserved. Copyright (C) 2012, 2015, Hitachi, Ltd.