このタスクでは、Bean 管理パーシスタンス (BMP) エンティティー Bean
メソッドの実行中に AccessIntent API をプログラマチックに検索および呼び出す方法について説明します。
手順
- 名前空間から現行のアクセス・インテント・サービスを検索します。 以下に例を示します。
InitialContext ic = new InitialContext();
AccessIntentService aiService = ic.lookup("java:comp/websphere/AppProfile/AccessIntentService");
- BMP のリモート/ローカル・コンポーネント・インターフェースのメソッドから、javax.ejb.EntityContext を使用して現行の AccessIntent オブジェクトを取得します。
このオブジェクトは、コンテナーが setEntityContext メソッドを呼び出すときに BMP に渡されます。
EntityContext が myEntityCtx という名前の変数に格納されていたとします。 以下に例を示します。
AccessIntent ai = aiService.getAccessIntent (myEntityCtx);
- AccessIntent インターフェースの get() メソッドを使用して必要な情報を取得します。 以下に例を示します。
int concurrency = ai.getConcurrencyControl();
int accessType = ai.getAccessType();
if ( (concurrency == AccessIntent.CONCURRENCY_CONTROL_PESSIMISTIC)
&& (accessType == AccessIntent.ACCESS_TYPE_UPDATE) ) {
int exclusive = ai.getPessimisticUpdateLockHint();
// . . .
}
// . . .
AccessIntent API の詳しい使用例については、
『例: CMP Bean と BMP Bean 間の接続を共有するための IBM 拡張 API の使用』トピックを参照してください。
タスクの結果
java:comp 検索で検索されたアクセス・インテント・オブジェクト参照は、
参照が検索されたメソッドの存続期間内で現行の参照となります。
アプリケーション・プロファイルが構成された方法によっては、
以降に同じメソッドを呼び出しても、
同じアクセス・インテント参照を検索しない場合があります。
このオブジェクト参照は、BMP エンティティー Bean のメソッドの呼び出し中にのみ検索可能であり、
コンテナー管理パーシスタンス (CMP) エンティティー Bean の要求時には存在しません。従って、
アクセス・インテント・オブジェクト参照を、所定の BMP メソッドの実行有効範囲を
越えてキャッシュに入れることも、実行有効範囲の外で使用することもしないでください。