Atomikos is designed along the ports and adapters/hexagonal architecture as described here by Alistair Cockburn.
Among other things, this means that it is relatively easy to:
- Implement new transaction APIs / standards / models
- Add new types of two-phase commit resources
Examples of things we’ve been able to realize thanks to this:
- JTA (port) / XA (adapter)
- TCC (port/adapter)
- RMI (port/adapter)
- WS-AT (port/adapter)
- CORBA’s OTS (port/adapter)
- TaaS - Transactions for REST (port/adapter)
The port and adapter model is also an important concept in the new book Implementing Domain-Driven Design. Our domain is 2-phase commit. Our adapter is our Participant model. Our ports are all the ways you can interact with our core system.