本任务描述如何在 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 的详细示例,请参阅主题“示例:使用 IBM 扩展 API 在 CMP Bean 与 BMP Bean 之间共享连接”。
结果
从 java:comp 查找检索的访问意向对象引用对于查找参考的方法的持续时间是当前的。取决于您如何配置应用程序概要文件,同一方法的后续调用可能不检索同一访问意向参考。只能在 BMP 实体 Bean 方法调用期间查找对象引用;对容器管理的持久性 (CMP) 实体 Bean 的请求期间,不存在此引用。因此,请勿超出任何给定 BMP 方法的执行作用域来对访问意向对象引用进行高速缓存,也不要在该作用域外部使用。