next up previous
Next: O (Mini-)Gerenciador de Transações Up: transacoes-corba-xa Previous: transacoes-corba-xa

Gerenciamento de Transações no JBoss

O mini-gerenciador de transações do JBoss não tem logging (e portanto não faz recuperação de quedas do sistema) nem propaga o contexto transacional para outros servidores J2EE (ou seja, não trata transações distribuídas envolvendo vários servidores J2EE). Ele é voltado exclusivamente para transações XA, atuando como coordenador de transações distribuídas que envolvem somente recursos XA diretamente utilizados por componentes EJB implantados no servidor de aplicações. Bancos de dados e filas de mensagens são exemplos típicos de recursos XA.

Considere as três situações descritas abaixo.

  1. Cenário 1: cada transação começa no servidor de aplicações, faz chamadas somente a EJBs implantados no próprio servidor e envolve apenas um gerenciador de banco de dados (que mantém o estado persistente de todos os entity beans usados pela transação).
  2. Cenário 2: cada transação começa no servidor de aplicações, faz chamadas somente a EJBs implantados no próprio servidor e pode envolver mais de um gerenciador de bancos de dados ou de filas de mensagens.
  3. Cenário 3: cada transação pode envolver EJBs implantados em servidores J2EE distintos, que se comunicam via IIOP.

O gerenciador de transações do JBoss é uma solução perfeitamente adequada para o cenário 1. A ausência de logging e recuperação de quedas no gerenciador de transações não causa problemas, pois cada transação envolve um único servidor de banco de dados (que tem seu próprio log e seu procedimento de recuperação de quedas do sistema).

No cenário 2 temos, para cada transação, um ``two-phase commit'' envolvendo apenas recursos XA. O gerenciador de transações do JBoss pode ser usado em tal cenário, mas não oferece proteção contra quedas do sistema. Ele não é adequado quando o cenário 2 aparecer numa aplicação tipo ``missão crítica'', a qual necessita de garantia absoluta de que mesmo em caso de queda do sistema, este não ficará num estado inconsistente, com alguma transação executada ``pela metade''. Não se deve usar um gerenciador de transações sem logging para uma aplicação de transferência de fundos entre contas bancárias em diferentes servidores de bancos de dados, por exemplo.

O gerenciador de transações do JBoss não oferece nenhum suporte para o cenário 3.



Subsections
next up previous
Next: O (Mini-)Gerenciador de Transações Up: transacoes-corba-xa Previous: transacoes-corba-xa
Francisco Reverbel
2004-11-23