Esta tarefa descreve como recuperar e chamar programaticamente a API AccessIntent durante a execução de métodos de beans de entidade BMP (bean managed persistence).
Procedimento
- Procure o serviço de intenção de acesso do espaço de nomes. Por Exemplo:
InitialContext ic = new InitialContext();
AccessIntentService aiService = ic.lookup("java:comp/websphere/AppProfile/AccessIntentService");
- De um método da interface do componente remoto ou local do
BMP, obtenha o objeto AccessIntent atual utilizando o javax.ejb.EntityContext.
Este objeto
é transmitido para o BMP quando o contêiner chama o método setEntityContext. Suponha que o EntityContext foi armazenado em uma variável denominada myEntityCtx. Por Exemplo:
AccessIntent ai = aiService.getAccessIntent (myEntityCtx);
- Use os métodos get() da interface AccessIntent para obter as informações desejadas. Por Exemplo:
int concurrency = ai.getConcurrencyControl();
int accessType = ai.getAccessType();
if ( (concurrency == AccessIntent.CONCURRENCY_CONTROL_PESSIMISTIC)
&& (accessType == AccessIntent.ACCESS_TYPE_UPDATE) ) {
int exclusive = ai.getPessimisticUpdateLockHint();
// . . .
}
// . . .
Para obter um exemplo detalhado do uso da API AccessIntent,
consulte o tópico Exemplo: Usando APIs Estendidas da IBM para Compartilhar Conexões
entre Beans CMP e Beans BMP.
Resultados
A referência do objeto intenção de acesso recuperada da
consulta java:comp é atual para a duração do método no qual a referência
foi consultada. Dependendo de como você configurou o perfil do aplicativo, chamadas
subsequentes do mesmo método podem não recuperar a mesma referência de intenção de
acesso. Você pode consultar a referência do objeto durante
a chamada de um método do bean de entidade BMP;
a referência não existe durante um pedido em um bean de entidade de persistência
gerenciada por contêiner (CMP).
Portanto, não armazene em cache as referências do objeto de
intenção de acesso além, ou usadas fora do escopo da execução
de qualquer método BMP especificado.