Transações Locais e Globais
Os aplicativos utilizam recursos, como origens de dados JDBC (Java™ Database Connectivity) ou connection factories, que são configurados utilizando a visualização Recursos do console administrativo. Como esses recursos participam em uma transação global depende do suporte a transação subjacente do provedor dos recursos.
Por exemplo, a maioria dos provedores JDBC podem fornecer versões XA ou não XA de uma origem de dados. Uma origem de dados não XA pode suportar apenas RMLT (resource manager local transactions), mas uma origem de dados XA pode suportar coordenação two-phase commit, além de transações locais.
![[z/OS]](../images/ngzos.gif)
Se um aplicativo usar dois ou mais provedores de recursos que suportem apenas RMLTs, a atomicidade não poderá ser garantida, em razão da natureza de fase única desses recursos. Para assegurar o comportamento atômico, o
aplicativo deve usar recursos que suportem coordenação de XA ou coordenação de RRS e deve acessá-los
dentro de uma transação global.
Se um aplicativo usar dois ou mais provedores de recursos que suportem apenas RMLTs, a atomicidade não poderá ser garantida, em razão da natureza de fase única desses recursos. Para assegurar o comportamento atômico, o aplicativo deve
usar recursos que suportem coordenação de XA e deve acessá-los
em uma transação global.
Se um aplicativo usar apenas uma RMLT, o comportamento atômico poderá ser garantido pelo gerenciador de recursos, que poderá ser acessado em um contexto de LTC (Local Transaction Containment).
Um aplicativo também pode acessar um único gerenciador de recursos em um contexto de transação global, mesmo se esse gerenciador de recursos não suportar a coordenação de XA. Um aplicativo pode fazer isso porque o servidor de aplicativos executa uma "otimização apenas do recurso" e interage com o gerenciador de recursos em uma RMLT. Em um contexto de transação global, qualquer tentativa de usar mais de um provedor de recursos que suporta apenas RMLTs faz com que a transação global seja recuperada.
A qualquer momento, uma instância de um enterprise bean pode ter trabalho pendente em um contexto de transação global ou em um contexto de contenção de transação local, mas não em ambos. Uma instância de enterprise bean poderá mudar de execução em um tipo de contexto para o outro (em qualquer direção), se todo o trabalho pendente no contexto original estiver concluído. Qualquer violação deste princípio faz com que uma exceção seja lançada quando o enterprise bean tentar iniciar o novo contexto.