Coordenação de Acesso aos Recursos One-phase Commit e Two-phase Commit Compatíveis na Mesma Transação
O suporte ao último participante permite a utilização de um recurso com capacidade de consolidação em uma única fase com um número qualquer de recursos com capacidade de consolidação em duas fases na mesma transação global. É possível ter várias interações que envolvam o recurso de confirmação de uma fase na mesma transação, mas apenas um recurso desse tipo pode estar envolvido.
Na confirmação da transação, os recursos two-phase commit são preparados primeiro utilizando o protocolo two-phase commit e, se for bem-sucedido, o recurso one-phase commit será, então, chamado para confirmação. Os recursos two-phase commit são confirmados ou recuperados, dependendo da resposta do recurso one-phase commit.
- O cenário principal é quando o provedor de recursos de consolidação em uma fase é acessado no processo do servidor de aplicativos (o servidor "raiz da transação") no qual a transação foi iniciada.
Nesse cenário, o suporte ao último participante permite coordenar um recurso compatível com one-phase commit e um número qualquer de recursos compatíveis com two-phase commit na mesma transação.
- Se o provedor de recursos de consolidação em uma fase for acessado em um servidor de aplicativos diferente
(um servidor "subordinado da transação") daquele no qual a transação foi iniciada; por exemplo, como resultado de uma chamada transacional em uma interface EJB remota onde a implementação EJB acessa um provedor de recursos de consolidação em uma fase.
Nesse cenário, a transação geralmente não pode ser consolidada. Para poder consolidar (como parte da transação global) um recurso de consolidação em uma fase listado em um servidor subordinado da transação, o serviço de transação deve delegar a responsabilidade de coordenação da raiz de transação para o servidor subordinado. Isso ocorre apenas se nenhum outro recurso foi registrado com o servidor raiz da transação.
O suporte ao último participante apresenta um maior risco de um resultado heurístico para a transação. Ou seja, o gerenciador de transações não pode se assegurar que todos os recursos foram concluídos na mesma direção (consolidados ou revertidos). Por este motivo, para ativar um aplicativo para coordenar o acesso a recursos compatíveis com one-phase e two-phase commit na mesma transação, você deve configurar o aplicativo para aceitar o risco heurístico, ou seja, o risco elevado de um resultado heurístico.
Ocorre um resultado heurístico se o serviço de transação (JTS) não receber resposta do fluxo de consolidação em uma fase no recurso de consolidação em uma fase. Nesta situação, o serviço de transações não pode determinar se as mudanças no recurso de one-phase commit foram confirmadas ou recuperadas e, dessa forma, não podem acionar confiavelmente o resultado correto da transação global nos outros recursos de two-phase commit.
É possível configurar o serviço de transações para um servidor de aplicativos para aceitar o risco heurístico, ou pode configurar aplicativos individualmente para aceitar o risco heurístico. É possível configurar os aplicativos individualmente quando eles são montados ou após a implementação.
- Se o recurso de consolidação em uma fase foi solicitado para consolidação, um resultado heurístico será relatado no log de atividades.
- Se o recurso de consolidação em uma fase não foi solicitado para consolidação, a transação será revertida consistentemente.
Exceções de transação que envolvem recursos one-phase e two-phase commit
As exceções que podem ser emitidas por transações que envolvem recursos one-phase e two-phase commit são iguais àquelas que podem ser emitidas por transações que envolvem apenas recursos two-phase commit.
As exceções que podem ocorrer são listadas nas informações de referência da interface de programação de aplicativos (API) no centro de informações do WebSphere Application Server.