Search code examples
javadistributed-transactions

Lightweight In-Process Distributed Transaction Manager for Java?


I'm trying to extend Clojure to add durability to refs in a way that allows users to choose which data store instances to persist to. That requires distributed transactions. Are there any really lightweight, in-process distributed transaction managers, supporting XA, for Java? If not, and I have to roll my own, are there any good resources explaining what a distributed transaction coordinator has to support? Specifically, I'm having trouble understanding what the semantics of the 3 parts of an XID are really supposed to be. As an initial implementation, I'm using BDB JE.


Solution

  • I know these two:

    • Bitronix: This is the one we are using currently, it seems to work OK and it is easy to configure.

    • Atomikos: We have tried this, but it is a little harder to configure than Bitronix, and it has some hardcoded dependencies to java.util.logging which we did not want. It should more feature-complete than Bitronix as it is an open source version of a commercially supported product.