Next: O (Mini-)Gerenciador de Transações
Up: transacoes-corba-xa
Previous: transacoes-corba-xa
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.
- 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).
- 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.
- 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: O (Mini-)Gerenciador de Transações
Up: transacoes-corba-xa
Previous: transacoes-corba-xa
Francisco Reverbel
2004-11-23