Transactions processing engine based on XA and XA+ protocols.
This engine supports three type of transactions:
- Local - boundaries of transactions are limited by one resource manager;
- Distributed - such transactions distributed over two or more resource managers;
- Global - it's main purpose of this project to implement supports of transactions distributed over several application programs.
First, to achieve global transactions engine works with resources managers over XA protocol (see 1) to control lifecycle of applications transactions. It's two phase protocol with steps when transactions prepared and decision to commit/rollback.
Next, engine use XA+ interface (see 2) to communicate with each others of participant of global transaction.
Also engine on superior side or initiator of global transaction make transactions log with all decisions over transactions to recovery after failover if needed.