title: Lightweight In-Process Distributed Transaction Manager for Java?
body: <p>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.</p>