Package 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(jakarta.transaction.Synchronization)`
  - `TransactionSynchronization`

## Field Summary

Fields
Modifier and Type
Field
Description
`protected static final org.apache.commons.logging.Log`
`logger`

## Constructor Summary

Constructors
Constructor
Description
`SpringJtaSynchronizationAdapter(TransactionSynchronization springSynchronization)`
Create a new SpringJtaSynchronizationAdapter for the given Spring TransactionSynchronization and JTA TransactionManager.
`SpringJtaSynchronizationAdapter(TransactionSynchronization springSynchronization, TransactionManager jtaTransactionManager)`
Deprecated.
as of 6.0.12 since JTA 1.1+ requires implicit rollback-only setting in case of an exception thrown in `beforeCompletion`, so the regular `SpringJtaSynchronizationAdapter(TransactionSynchronization)` constructor is sufficient for all scenarios
`SpringJtaSynchronizationAdapter(TransactionSynchronization springSynchronization, UserTransaction jtaUserTransaction)`
Deprecated.
as of 6.0.12 since JTA 1.1+ requires implicit rollback-only setting in case of an exception thrown in `beforeCompletion`, so the regular `SpringJtaSynchronizationAdapter(TransactionSynchronization)` constructor is sufficient for all scenarios

## Method Summary

Modifier and Type
Method
Description
`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 Details

### logger

protected static final org.apache.commons.logging.Log logger

## Constructor Details

### 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

@Deprecated(since="6.0.12") public SpringJtaSynchronizationAdapter(TransactionSynchronization springSynchronization, @Nullable UserTransaction jtaUserTransaction)
Deprecated.
as of 6.0.12 since JTA 1.1+ requires implicit rollback-only setting in case of an exception thrown in `beforeCompletion`, so the regular `SpringJtaSynchronizationAdapter(TransactionSynchronization)` constructor is sufficient for all scenarios
Create a new SpringJtaSynchronizationAdapter for the given Spring TransactionSynchronization and JTA TransactionManager.

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`

### SpringJtaSynchronizationAdapter

@Deprecated(since="6.0.12") public SpringJtaSynchronizationAdapter(TransactionSynchronization springSynchronization, @Nullable TransactionManager jtaTransactionManager)
Deprecated.
as of 6.0.12 since JTA 1.1+ requires implicit rollback-only setting in case of an exception thrown in `beforeCompletion`, so the regular `SpringJtaSynchronizationAdapter(TransactionSynchronization)` constructor is sufficient for all scenarios
Create a new SpringJtaSynchronizationAdapter for the given Spring TransactionSynchronization and JTA TransactionManager.

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`

## Method Details

### 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)`