## 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
`protected static Log` `logger`

Constructor Summary
`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
`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)`