A Java Transaction API, ou JTA, é uma API pertencente à plataforma Java EE. Ela disponibiliza uma interface para a demarcação de transações em aplicações escritas na linguagem Java. Esta interface é a mesma independentemente da forma como foi implementado o monitor de transação. A JTA é um padrão definido pela JSR 907.
Características
A JTA é uma API de alto nível utilizada por desenvolvedores de aplicações para a plataforma Java. Através da interface JTA o desenvolvedor interage com o monitor de transação, normalmente implementado em um servidor de aplicações, para determinar as fronteiras de uma transação dentro de uma aplicação, isto é, através da interface JTA ele define o início da transação e determina se ela será confirmada (commit) ou não (rollback).
A JTA é um mapeamento para a plataforma Java do padrão XA, que permite aos recursos, como um SGBD ou servidor JMS, participarem de uma transação global gerenciada por um monitor de transação externo.
Interfaces
User Transaction
Esta interface permite que o desenvolvedor de aplicações defina as fronteiras das transações no código do programa. Através de comandos da linguagem Java o desenvolvedor interage com o monitor de transação. A interface Java que define este comportamento é: javax.transaction.UserTransaction
.
Transaction Manager
Quando o gerenciamento das transações é deixado sob responsabilidade de um servidor de aplicações, a interface utilizada é a javax.transaction.TransactionManager
. É o caso das aplicações implementadas através dos EJBs chamados de Container Managed Transactions ( transações gerenciadas pelo container). Neste caso as fronteiras transacionais são definidas na configuração da aplicação e não, pelo menos não diretamente, no código.
Transaction
Esta interface permite que operações sejam realizadas sobre uma transação. Toda transação global tem um objeto do tipo javax.transaction.Transaction
associado. O servidor de aplicações tem acesso a esse objeto através do método getTransaction()
da interface javax.transaction.TransactionManager
.
XA Resource
Para que um recurso participe de uma transação global JTA, ele deve implementar a interface javax.transaction.xa.XAResource
. Um driver JDBC ou um provedor JMS que suporte transações distribuídas deve implementar esta interface. Esta interface mapeia a interface do padrão XA para a plataforma Java.
Xid
Esta interface implementa a infraestrutura de identificação de transações do padrão XA. Ela define meios para o acesso do id (identificador) da transação. Esta interface não é visível pelo desenvolvedor ou pelo servidor de aplicações.
Implementações
Os servidores de aplicação que suportam o padrão Java EE implementam monitores de transação compatíveis com a API JTA. A SDK da Java EE, da Oracle Corporation, inclui o monitor Java Transaction Service (JTS).