이 태스크는 BMP(Bean Managed Persistence) 엔티티 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(Container Managed Persistence)
엔티티 Bean에 대한 요청 중에 참조가 존재하지 않습니다.
그러므로 임의의 주어진 BMP 메소드의 실행의 범위를 벗어나거나
범위 밖에서 사용되는 액세스 인텐트 오브젝트 참조를 캐시하지 마십시오.