Chapter 2. The JBoss JTA Implementation
The Java Transaction API (JTA) consists of three elements:
- A high-level application transaction demarcation interface
- A high-level transaction manager interface intended for application server
- A standard Java mapping of the X/Open XA protocol intended for transactional resource manager
All of the JTA classes and interfaces are declared within the javax.transaction package, and the corresponding JBossJTA implementations are defined within the com.arjuna.ats.jta package.
Important
Each Xid that JBoss Transaction Service creates needs a unique node identifier encoded within it. JBoss Transaction Service will only recover transactions and states that match a specified node identifier. The node identifier should be provided to JBoss transaction Service via the com.arjuna.ats.arjuna.xa.nodeIdentifier property. You must ensure this value is unique across your JBoss Transaction Service instances. If you do not provide a value, JBoss Transaction Service will generate one and report the value via the logging infrastructure. The node identifier should be alphanumeric.
2.1. UserTransaction
The
UserTransaction
interface allows applications to control transaction boundaries. It provides methods for beginning, committing, and rolling back top-level transactions. Nested transactions are not supported, and the begin
method throws the NotSupportedException
when the calling thread is already associated with a transaction. UserTransaction
automatically associates newly created transactions with the invoking thread.
Note
You can obtain a
UserTransaction
from JNDI.
InitialContext ic = new InitialContext(); UserTransaction utx = ic.lookup("java:comp/UserTransaction")
In order to select the local JTA implementation:
- Set the com.arjuna.ats.jta.jtaTMImplementation property to
com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionManagerImple
. - Set the com.arjuna.ats.jta.jtaUTImplementation property to
com.arjuna.ats.internal.jta.transaction.arjunacore.UserTransactionImple
.