org.springframework.transaction.jta

## Class SpringJtaSynchronizationAdapter

- java.lang.Object
- - org.springframework.transaction.jta.SpringJtaSynchronizationAdapter

All Implemented Interfaces:
  Synchronization

    public class SpringJtaSynchronizationAdapter
    extends Object
    implements Synchronization

Adapter that implements the JTA `Synchronization` interface delegating to an underlying Spring `TransactionSynchronization`.

Useful for synchronizing Spring resource management code with plain JTA / EJB CMT transactions, despite the original code being built for Spring transaction synchronization.

Since:
  2.0
Author:
  Juergen Hoeller
See Also:
  `Transaction.registerSynchronization(javax.transaction.Synchronization)`, `TransactionSynchronization`

### Field Summary

Fields
`protected static Log` `logger`

### Constructor Summary

Constructors
Constructor and Description
`SpringJtaSynchronizationAdapter(TransactionSynchronization springSynchronization)` Create a new SpringJtaSynchronizationAdapter for the given Spring TransactionSynchronization and JTA TransactionManager.
`SpringJtaSynchronizationAdapter(TransactionSynchronization springSynchronization, TransactionManager jtaTransactionManager)` Create a new SpringJtaSynchronizationAdapter for the given Spring TransactionSynchronization and JTA TransactionManager.
`SpringJtaSynchronizationAdapter(TransactionSynchronization springSynchronization, UserTransaction jtaUserTransaction)` Create a new SpringJtaSynchronizationAdapter for the given Spring TransactionSynchronization and JTA TransactionManager.

### Method Summary

Methods
`void` `afterCompletion(int status)` JTA `afterCompletion` callback: invoked after commit/rollback.
`void` `beforeCompletion()` JTA `beforeCompletion` callback: just invoked before commit.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Field Detail

#### logger

    protected static final Log logger

### Constructor Detail

#### SpringJtaSynchronizationAdapter

    public SpringJtaSynchronizationAdapter(TransactionSynchronization springSynchronization)

Create a new SpringJtaSynchronizationAdapter for the given Spring TransactionSynchronization and JTA TransactionManager.

Parameters:
  `springSynchronization` - the Spring TransactionSynchronization to delegate to

#### SpringJtaSynchronizationAdapter

    public SpringJtaSynchronizationAdapter(TransactionSynchronization springSynchronization,
                                   UserTransaction jtaUserTransaction)

Create a new SpringJtaSynchronizationAdapter for the given Spring TransactionSynchronization and JTA TransactionManager.

Note that this adapter will never perform a rollback-only call on WebLogic, since WebLogic Server is known to automatically mark the transaction as rollback-only in case of a `beforeCompletion` exception. Hence, on WLS, this constructor is equivalent to the single-arg constructor.

Parameters:
  `springSynchronization` - the Spring TransactionSynchronization to delegate to
  `jtaUserTransaction` - the JTA UserTransaction to use for rollback-only setting in case of an exception thrown in `beforeCompletion` (can be omitted if the JTA provider itself marks the transaction rollback-only in such a scenario, which is required by the JTA specification as of JTA 1.1).

#### SpringJtaSynchronizationAdapter

    public SpringJtaSynchronizationAdapter(TransactionSynchronization springSynchronization,
                                   TransactionManager jtaTransactionManager)

Create a new SpringJtaSynchronizationAdapter for the given Spring TransactionSynchronization and JTA TransactionManager.

Note that this adapter will never perform a rollback-only call on WebLogic, since WebLogic Server is known to automatically mark the transaction as rollback-only in case of a `beforeCompletion` exception. Hence, on WLS, this constructor is equivalent to the single-arg constructor.

Parameters:
  `springSynchronization` - the Spring TransactionSynchronization to delegate to
  `jtaTransactionManager` - the JTA TransactionManager to use for rollback-only setting in case of an exception thrown in `beforeCompletion` (can be omitted if the JTA provider itself marks the transaction rollback-only in such a scenario, which is required by the JTA specification as of JTA 1.1)

### Method Detail

#### beforeCompletion

    public void beforeCompletion()

JTA `beforeCompletion` callback: just invoked before commit.

In case of an exception, the JTA transaction will be marked as rollback-only.

Specified by:
  `beforeCompletion` in interface `Synchronization`
See Also:
  `TransactionSynchronization.beforeCommit(boolean)`

#### afterCompletion

    public void afterCompletion(int status)

JTA `afterCompletion` callback: invoked after commit/rollback.

Needs to invoke the Spring synchronization's `beforeCompletion` at this late stage in case of a rollback, since there is no corresponding callback with JTA.

Specified by:
  `afterCompletion` in interface `Synchronization`
See Also:
  `TransactionSynchronization.beforeCompletion()`, `TransactionSynchronization.afterCompletion(int)`