org.springframework.transaction.jta

## Class OC4JJtaTransactionManager

- java.lang.Object
- - org.springframework.transaction.support.AbstractPlatformTransactionManager
  - - org.springframework.transaction.jta.JtaTransactionManager
    - - org.springframework.transaction.jta.OC4JJtaTransactionManager

- All Implemented Interfaces:
    Serializable, InitializingBean, TransactionFactory, PlatformTransactionManager

  Deprecated.
  as of Spring 3.2, in favor of `WebLogicJtaTransactionManager` since Oracle end-of-lifed OC4J in favor of WebLogic

      @Deprecated
      public class OC4JJtaTransactionManager
      extends JtaTransactionManager

  Special `JtaTransactionManager` variant for Oracle OC4J (10.1.3 and higher). Supports the full power of Spring's transaction definitions on OC4J's transaction coordinator, beyond standard JTA: transaction names and per-transaction isolation levels.

  Uses OC4J's special `begin(name)` method to start a JTA transaction, in orderto make Spring-driven transactions visible in OC4J's transaction monitor. In case of Spring's declarative transactions, the exposed name will (by default) be the fully-qualified class name + "." + method name.

  Supports a per-transaction isolation level through OC4J's corresponding `OC4JTransaction.setTransactionIsolation(int)` method. This will apply the specified isolation level (e.g. ISOLATION_SERIALIZABLE) to all JDBC Connections that participate in the given transaction.

  Automatically detects the available OC4J server version and adapts accordingly. Supports the "com.evermind.server" package in OC4J 10.1.3.2 as well as the "oracle.j2ee.transaction" package in later OC4J versions.

  By default, the JTA UserTransaction and TransactionManager handles are fetched directly from OC4J's `TransactionUtility` in 10.1.3.2+. This can be overridden by specifying "userTransaction"/"userTransactionName" and "transactionManager"/"transactionManagerName", passing in existing handles or specifying corresponding JNDI locations to look up.

  Thanks to Oracle for donating the original version of this extended OC4J integration code to the Spring project!

  Since:
    2.0.3
  Author:
    Paul Parkinson, Juergen Hoeller
  See Also:
    `TransactionDefinition.getName()`, `TransactionDefinition.getIsolationLevel()`, Serialized Form

- - ### Nested Class Summary

    - ### Nested classes/interfaces inherited from class org.springframework.transaction.support.AbstractPlatformTransactionManager

      `AbstractPlatformTransactionManager.SuspendedResourcesHolder`

  - ### Field Summary

    - ### Fields inherited from class org.springframework.transaction.jta.JtaTransactionManager

      `DEFAULT_TRANSACTION_SYNCHRONIZATION_REGISTRY_NAME, DEFAULT_USER_TRANSACTION_NAME, FALLBACK_TRANSACTION_MANAGER_NAMES`

    - ### Fields inherited from class org.springframework.transaction.support.AbstractPlatformTransactionManager

      `logger, SYNCHRONIZATION_ALWAYS, SYNCHRONIZATION_NEVER, SYNCHRONIZATION_ON_ACTUAL_TRANSACTION`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `OC4JJtaTransactionManager()` Deprecated.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `afterPropertiesSet()` Deprecated. Initialize the UserTransaction as well as the TransactionManager handle.
    `Transaction` | `createTransaction(String name, int timeout)` Deprecated. Create an active Transaction object based on the given name and timeout.
    `protected void` | `doJtaBegin(JtaTransactionObject txObject, TransactionDefinition definition)` Deprecated. Perform a JTA begin on the JTA UserTransaction or TransactionManager.
    `protected UserTransaction` | `retrieveUserTransaction()` Deprecated. Allows subclasses to retrieve the JTA UserTransaction in a vendor-specific manner.

    - ### Methods inherited from class org.springframework.transaction.jta.JtaTransactionManager

      `applyIsolationLevel, applyTimeout, buildUserTransaction, checkUserTransactionAndTransactionManager, doBegin, doCommit, doGetJtaTransaction, doGetTransaction, doJtaResume, doJtaSuspend, doRegisterAfterCompletionWithJtaTransaction, doResume, doRollback, doSetRollbackOnly, doSuspend, findTransactionManager, findTransactionSynchronizationRegistry, findUserTransaction, getJndiEnvironment, getJndiTemplate, getTransactionManager, getUserTransaction, initTransactionSynchronizationRegistry, initUserTransactionAndTransactionManager, isExistingTransaction, lookupTransactionManager, lookupTransactionSynchronizationRegistry, lookupUserTransaction, registerAfterCompletionWithExistingTransaction, retrieveTransactionManager, retrieveTransactionSynchronizationRegistry, setAllowCustomIsolationLevels, setAutodetectTransactionManager, setAutodetectUserTransaction, setCacheUserTransaction, setJndiEnvironment, setJndiTemplate, setTransactionManager, setTransactionManagerName, setTransactionSynchronizationRegistryName, setUserTransaction, setUserTransactionName, shouldCommitOnGlobalRollbackOnly, supportsResourceAdapterManagedTransactions, useSavepointForNestedTransaction`

    - ### Methods inherited from class org.springframework.transaction.support.AbstractPlatformTransactionManager

      `commit, determineTimeout, doCleanupAfterCompletion, getDefaultTimeout, getTransaction, getTransactionSynchronization, invokeAfterCompletion, isFailEarlyOnGlobalRollbackOnly, isGlobalRollbackOnParticipationFailure, isNestedTransactionAllowed, isRollbackOnCommitFailure, isValidateExistingTransaction, newTransactionStatus, prepareForCommit, prepareSynchronization, prepareTransactionStatus, resume, rollback, setDefaultTimeout, setFailEarlyOnGlobalRollbackOnly, setGlobalRollbackOnParticipationFailure, setNestedTransactionAllowed, setRollbackOnCommitFailure, setTransactionSynchronization, setTransactionSynchronizationName, setValidateExistingTransaction, suspend, triggerBeforeCommit, triggerBeforeCompletion`

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

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

- - ### Constructor Detail

    - #### OC4JJtaTransactionManager

          public OC4JJtaTransactionManager()

      Deprecated.

  - ### Method Detail

    - #### afterPropertiesSet

          public void afterPropertiesSet()
                                  throws TransactionSystemException

      Deprecated.
      Description copied from class: `JtaTransactionManager`
      Initialize the UserTransaction as well as the TransactionManager handle.
      Specified by:
        `afterPropertiesSet` in interface `InitializingBean`
      Overrides:
        `afterPropertiesSet` in class `JtaTransactionManager`
      Throws:
        `TransactionSystemException`
      See Also:
        `JtaTransactionManager.initUserTransactionAndTransactionManager()`

    - #### retrieveUserTransaction

          protected UserTransaction retrieveUserTransaction()
                                                     throws TransactionSystemException

      Deprecated.
      Description copied from class: `JtaTransactionManager`
      Allows subclasses to retrieve the JTA UserTransaction in a vendor-specific manner. Only called if no "userTransaction" or "userTransactionName" specified.

      The default implementation simply returns `null`.

      Overrides:
        `retrieveUserTransaction` in class `JtaTransactionManager`
      Returns:
        the JTA UserTransaction handle to use, or `null` if none found
      Throws:
        `TransactionSystemException` - in case of errors
      See Also:
        `JtaTransactionManager.setUserTransaction(javax.transaction.UserTransaction)`, `JtaTransactionManager.setUserTransactionName(java.lang.String)`

    - #### doJtaBegin

          protected void doJtaBegin(JtaTransactionObject txObject,
                        TransactionDefinition definition)
                             throws NotSupportedException,
                                    SystemException

      Deprecated.
      Description copied from class: `JtaTransactionManager`
      Perform a JTA begin on the JTA UserTransaction or TransactionManager.

      This implementation only supports standard JTA functionality: that is, no per-transaction isolation levels and no transaction names. Can be overridden in subclasses, for specific JTA implementations.

      Calls `applyIsolationLevel` and `applyTimeout` before invoking the UserTransaction's `begin` method.

      Overrides:
        `doJtaBegin` in class `JtaTransactionManager`
      Parameters:
        `txObject` - the JtaTransactionObject containing the UserTransaction
        `definition` - TransactionDefinition instance, describing propagation behavior, isolation level, read-only flag, timeout, and transaction name
      Throws:
        `NotSupportedException` - if thrown by JTA methods
        `SystemException` - if thrown by JTA methods
      See Also:
        `JtaTransactionManager.getUserTransaction()`, `JtaTransactionManager.getTransactionManager()`, `JtaTransactionManager.applyIsolationLevel(org.springframework.transaction.jta.JtaTransactionObject, int)`, `JtaTransactionManager.applyTimeout(org.springframework.transaction.jta.JtaTransactionObject, int)`, `JtaTransactionObject.getUserTransaction()`, `UserTransaction.setTransactionTimeout(int)`, `UserTransaction.begin()`

    - #### createTransaction

          public Transaction createTransaction(String name,
                                      int timeout)
                                        throws NotSupportedException,
                                               SystemException

      Deprecated.
      Description copied from interface: `TransactionFactory`
      Create an active Transaction object based on the given name and timeout.
      Specified by:
        `createTransaction` in interface `TransactionFactory`
      Overrides:
        `createTransaction` in class `JtaTransactionManager`
      Parameters:
        `name` - the transaction name (may be `null`)
        `timeout` - the transaction timeout (may be -1 for the default timeout)
      Returns:
        the active Transaction object (never `null`)
      Throws:
        `NotSupportedException` - if the transaction manager does not support a transaction of the specified type
        `SystemException` - if the transaction manager failed to create the transaction