A distributed transaction is a transaction that updates data on two or more networked computer systems.
The data, applications are distributed across several computers.
In enterprise computing, it's often the case that several network hosts are involved, each hosting different servers, for example:
- web servers,
- EJB servers,
- Java Message Service (JMS) servers,
- and other Java or CORBA-based application servers.
For example, a distributed transaction might consist of money being transferred from an account in one bank to an account in another bank. You would not want either transaction committed without assurance that both will complete successfully.
Implementing robust distributed applications is difficult because these applications are subject to multiple failures, including failure of:
- the client,
- the server,
- and the network connection between the client and server.
In the absence of distributed transactions, the application program itself must detect and recover from these failures.
Many aspects of a distributed transaction are identical to a single database transaction.
For example, a distributed transaction provides predictable behavior by enforcing the ACID properties that define all transactions.
In order to satisfy the ACID properties, a transaction manager is responsible for creating and managing a global transaction that encompasses all operations against the implied resources.