Sometimes I need to have transactional control across different databases. The problem is that my Java application is standalone without an application server like JBoss, GlassFish, etc.
To have transaction control across different databases, the database must support distributed transactions (XA compliant). Also I need to have a distributed transaction manager in this case.
Here are some of the open source JTA managers
- SimpleJTA implements a standalone JTA compliant Transaction Manager. It is primarily designed to be used when a J2EE server is not available, for example, in Servlet applications, or standalone Java programs.
- TransactionsEssentials from Atomikos.
- JOTM (Java Open Transaction Manager) is a fully functional open source standalone transaction manager that implements the XA protocol and is compliant with the JTA APIs.
- JBoss Transactions (JBossTS).
- Bitronix Transaction Manager (BTM) is a simple but complete implementation of the JTA 1.0.1B API. It is a fully working XA transaction manager that provides all services required by the JTA API while trying to keep the code as simple as possible for easier understanding of the XA semantics.
- Tyrex transaction manager.
There is a good article at JavaWorld which describes using XA Transactions with Spring without a J2EE container.
Some articles for reading
- JOTM Transactions In Spring And Hibernate
- Tech Tip: CMT for POJOs with Spring and Transactions
- Spring Framework Transaction Management
Other blog on this topic.