Distributed transactions across multiple databases or systems need coordination. Without a standard API, each vendor implements transactions differently, breaking portability and making it hard to build reliable enterprise applications.
JTA (Java Transaction API) and JTS (Java Transaction Service) provide reliable transaction support for J2EE components. JTA is the API that developers use; JTS is the underlying transaction service implementation (based on CORBA OTS).
- JTA API: Developer uses
UserTransactioninterface (looked up via JNDI) - Transaction demarcation:
begin(),commit(),rollback()methods - JTS: Implements CORBA Object Transaction Service (OTS) specification
- Distributed transactions: Coordinates transactions across multiple resources (XA protocol)
- Container-managed: EJB containers can manage transactions declaratively (CMT)
Chapter 12 explains JTA/JTS in detail.
- JTA: API for transaction demarcation (developer-facing)
- JTS: Service implementation (CORBA OTS-based)
- Distributed: Coordinates across multiple resources
- XA support: Two-phase commit protocol
- J2EE standard: Part of J2EE platform
- CMT integration: EJB container can manage transactions declaratively
- Built from: Transactions in EJB — JTA/JTS provide transaction support
- Builds into: CMT vs BMT — JTA enables both models
- Related: EJB Container — container uses JTA/JTS for CMT
- Related: Java Platforms — JTA/JTS are part of J2EE
- Heuristic outcomes: Transactions may have heuristic commits/rollbacks
- Timeout: Transactions can timeout, causing rollback
- Nested transactions: J2EE uses flat transactions, not nested
- Resource enlistment: Resources must support XA for distributed transactions