ModeShape 3 should support participating in (local and distributed) JTA transactions, allowing ModeShape repositories to be used within:
- clients that explicitly manage user transactions (see Section 21.2 of the JSR-283 specification);
- EJBs that use container-managed transactions; and
- EJBs that use bean-managed transactions.
Additionally, clients should be able to explicitly enlist a Session (i.e., a XAResource) with an XA transaction, and even allow a single Session to be used across multiple (sequential) transactions or multiple Sessions to be enlisted within a single transaction (see Section 21.4 of the JSR-283 specification).
When a client enlists only a single ModeShape Session in a transaction, ideally only a single XAResource would be enlisted in the transaction so that transaction managers can optimize the 2PC across a single resource into a 1PC. This means that ideally ModeShape would not register both its own XAResource and Infinispan's XAResource.