Aries Local Transaction Control implementation

The Aries Local Transaction control implementation is available at the following maven coordinates:

<dependency>
    <groupId>org.apache.aries.tx-control</groupId>
    <artifactId>tx-control-service-local</artifactId>
    <version>${aries.tx.control.version}</version>
</dependency>

Using the Transaction Control Service

For the basics of using the Transaction Control Service see the Quick Start Documentation

As per the Transaction Control specification the Aries Local implementation registers a TransactionControl service in the OSGi Service Registry with the osgi.local.enabled property set to true

Local Transactions

Local transactions occur purely in-memory, and do not coordinate between resources.

This means that Local Transactions are not recoverable in the event of failure, and also that Local Transactions are not atomic across multiple resources. In particular, if two resources are accessed in a transaction (for example two different databases are modified) then it is possible that one resource will be committed and the other rolled back.

Local transactions are therefore best suited to scenarios where only a single resource is accessed within the transaction, or where consistency between resources is not important.

Working with local transactions

The Local Transaction Control Service supports participants in ongoing transactions via the registerLocalResource(LocalResource) method. It does not support XA resources and will throw an IllegalStateException if registerXAResource(XAResource) is called.

Lifecycle callbacks can be registered against the current scope using the preCompletion(Runnable) and postCompletion(Consumer)</code> methods.