Title: Aries Transaction Control Service

OSGi Transaction Control Service
---------------------------------

This set of modules is an implementation of the proposed OSGi Transaction Control Service and related 
services, such as JDBC and JPA resource providers.

The Transaction Control Service (RFC-221) is an in-progress RFC publicly available from the OSGi 
Alliance: [https://github.com/osgi/design/blob/master/rfcs/rfc0221/rfc-0221-TransactionControl.pdf][1]

Given that the RFC is non-final the OSGi API declared in this project is subject to change at any time up 
to its official release. Also the behaviour of this implementation may not always be up-to-date with the 
latest wording in the RFC. The project maintainers will, however try to keep pace with the RFC, and to 
ensure that the implementations are compliant with any OSGi specifications that result from the RFC.

#Getting started

If you're new to the Transaction Control service then we recommend that you read the 
[quickstart documentation first][2].

More detailed documentation is available in the [Aries Transaction Control Project][3]

## Why use the Transaction Control service?

Simply put the Transaction Control service makes resource access easy! There's no need to worry about
transaction lifecycle or closing connections, and there's built in support for useful features like 
connection pooling.

In addition to being simple the Transaction Control service also makes transaction management explicit. As a
result it is easier to follow the transactions flowing throughout your code, and it protects you from the 
[proxy problem][4] that declarative transaction strategies often suffer from.

## Modules

The following modules are available for use in OSGi

1. [tx-control-service-local][5] :- A purely local transaction control service implementation. This can be 
used with any resource-local capable ResourceProvider

2. [tx-control-service-xa][6] :- An XA-capable transaction control service implementation based on the 
Geronimo Transaction Manager. This can be used with XA capable resources, or with local resources. 
Local resources will make use of the last-participant gambit.

3. [tx-control-provider-jdbc-local][7] :- A JDBC resource provider that provides connection pooling and
that can integrate with local transactions. The JDBCConnectionProviderFactory service may be used 
directly, or a service may be configured using the _org.apache.aries.tx.control.jdbc.local_ pid

4. [tx-control-provider-jdbc-xa][8] :- A JDBC resource provider that provides connection pooling and 
that can integrate with local or XA transactions. The JDBCConnectionProviderFactory service may be 
used directly, or a service may be configured using the _org.apache.aries.tx.control.jdbc.xa_ pid

5. [tx-control-provider-jpa-local][9] :- A JPA resource provider that can integrate with local transactions. 
The JPAEntityManagerProviderFactory service may be used directly, or a service may be configured using 
the _org.apache.aries.tx.control.jpa.local_ pid. The implementation can also provide connection pooling 
if required

6. [tx-control-provider-jpa-xa][10] :- A JDBC resource provider that integrates with XA transactions. 
The JPAEntityManagerProviderFactory service may be used directly, or a service may be configured using 
the _org.apache.aries.tx.control.jpa.xa_ pid. The implementation can also provide connection pooling 
if required


### Which modules should I use?

If you wish to use entirely lightweight, resource-local transactions then it is best to pair the 
tx-control-service-local and tx-control-provider-jdbc-local or tx-control-provider-jpa-local bundles. 
This will give transactional behaviour, but the result is _not guaranteed to be ACID if more than one 
resource is used_.

If ACID behaviour is needed across multiple resources then the tx-control-service-xa *must* be used.
This service also provides an XA enabled two-phase commit algorithm, and also allows for ACID 
behaviour when _one_ of the resources only supports local transactions by using the last participant gambit.

When using the XA Transaction control service then the tx-control-provider-jdbc-xa or 
tx-control-provider-jpa-xa resource provider bundles should be used.

**IT IS NOT RECOMMENDED** to use both tx-control-service-xa and tx-control-service-local at 
the same time. This will be confusing, and may lead to problems if different parts of the application 
bind to different service implementations.

**NOTE:** There is also no reason to use the tx-control-provider-jdbc-local in addition to the 
tx-control-provider-jdbc-xa service. Using both together is not typically harmful, however the 
tx-control-provider-jdbc-xa bundle supports all of the same features as the 
tx-control-provider-jdbc-local bundle. The same is **not** true of the JPA provider implementations.

##Pre-release APIs

As part of the Aries Transaction Control implementations pre-release versions of the OSGi Transaction Control
API are provided. Rather than putting the API into the wrong package namespace, or outputting them at the wrong
version, they will be exported with a mandatory attribute of <code>api.status=aries.prerelease</code>. 

By setting this attribute on their API imports users accept that the API may change without a change to the
package version(s). These changes may, or may not, be binary compatible. Once the specification is final the
attribute will be removed from the export.


  [1]: https://github.com/osgi/design/blob/master/rfcs/rfc0221/rfc-0221-TransactionControl.pdf
  [2]: tx-control/quickstart.html
  [3]: tx-control/index.html
  [4]: tx-control/spring-tx.html
  [5]: tx-control/localTransactions.html
  [6]: tx-control/xaTransactions.html
  [7]: tx-control/localJDBC.html
  [8]: tx-control/xaJDBC.html
  [9]: tx-control/localJPA.html
  [10]: tx-control/xaJPA.html