Exceções de Intenção de Acesso
A seguir estão exceções que ocorrem em resposta ao aplicativo de políticas de intenção de acesso.
- com.ibm.ws.ejbpersistence.utilpm.OptimisticUpdateFailedException
- Se uma atualização falhar sob simultaneidade otimista porque campos foram alterados em outra transação entre pedidos de carregamento e de armazenamento, uma OptimisticUpdateFailedException será levantada e a consolidação falhará.
- com.ibm.ws.ejbpersistence.utilpm.PersistenceManagerException
- Se o
método que dirige o método ejbLoad() está configurado para ser apenas leitura mas
atualizações são então feitas dentro da transação que carregou o estado do bean,
uma exceção será lançada durante a chamada do método ejbStore() e será efetuado
rollback da transação. Da mesma forma, o método ejbRemove() não pode obter êxito
em uma transação que está definida como apenas leitura. Se uma dica de atualização for aplicada a
métodos de beans de entidade com persistência gerenciada por bean, o mesmo comportamento e
exceção resultarão.
O objeto de exceção encaminhado contém a sequência de mensagem PMGR1103E:
Atualizar bean beanName somente leitura no nível da instância
Esta exceção também é lançada se o critério de intenção de acesso aplicado não puder ser honrado porque um método de acesso finder, ejbSelect, ou de relacionamento gerenciado por contêiner (CMR) retorna um resultado inerentemente apenas leitura. O objeto de exceção encaminhado contém a sequência de mensagem PMGR1001: Nenhum DataAccessSpec desse tipo - methodName
A ocorrência mais comum desse erro é quando um finder personalizado que contém uma instrução de EJB Query Language (EJB QL) apenas leitura é chamado com uma intenção de acesso aplicada de wsPessimisticUpdate ou wsPessimisticUpdate-Exclusive. Essas políticas exigem o uso de uma cláusula USE AND KEEP UPDATE LOCKS na instrução SQL SELECT a ser executada, mas uma consulta de leitura não pode suportar USE AND KEEP UPDATE LOCKS. Outros exemplos de consultas apenas leitura incluem uniões; o uso das palavras-chave ORDER BY, GROUP BY e DISTINCT.
Para eliminar a exceção, edite a consulta EJB para que ela não retorne um resultado inerentemente apenas leitura ou altere o critério de intenção de acesso que está sendo aplicado.- Se for necessário um acesso de atualização, altere a definição de intenção de acesso aplicada para wsPessimisticUpdate-WeakestLockAtLoad ou wsOptimisticUpdate.
- Se o acesso de atualização não for realmente necessário, utilize wsPessimisticRead ou wsOptimisticRead.
- Se for necessário o compartilhamento da conexão entre beans de entidade, utilize wsPessimisticUpdate-WeakestLockAtLoad ou wsPessimisticRead.
- com.ibm.websphere.ejb.container.CollectionCannotBeFurtherAccessed
- Se uma coleção demorada for dirigida depois que ela não está mais no escopo, e além do que já foi armazenado localmente em buffer, uma exceção CollectionCannotBeFurtherAccessed será lançada.
- com.ibm.ws.exception.RuntimeWarning
- Se um aplicativo estiver configurado
incorretamente, uma exceção de aviso de tempo de execução será lançada quando o aplicativo for iniciado;
a inicialização é finalizada. É possível validar a configuração de um aplicativo
escolhendo a função de verificação. Alguns exemplos de má configuração incluem:
- Um método configurado com dois critérios de intenção de acesso diferentes.
- Um método configurado com um critério de intenção de acesso indefinido.