org.springframework.transaction.support

## Class ResourceHolderSupport

- java.lang.Object
- - org.springframework.transaction.support.ResourceHolderSupport

- All Implemented Interfaces:
    ResourceHolder
  Direct Known Subclasses:
    ConnectionHolder, ConnectionHolder, EntityManagerHolder, JmsResourceHolder, PersistenceManagerHolder, SessionHolder, SessionHolder

      public abstract class ResourceHolderSupport
      extends Object
      implements ResourceHolder

  Convenient base class for resource holders.

  Features rollback-only support for nested transactions. Can expire after a certain number of seconds or milliseconds, to determine transactional timeouts.

  Since:
    02.02.2004
  Author:
    Juergen Hoeller
  See Also:
    `DataSourceTransactionManager.doBegin(java.lang.Object, org.springframework.transaction.TransactionDefinition)`, `DataSourceUtils.applyTransactionTimeout(java.sql.Statement, javax.sql.DataSource)`

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `ResourceHolderSupport()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `clear()` Clear the transactional state of this resource holder.
    `Date` | `getDeadline()` Return the expiration deadline of this object.
    `long` | `getTimeToLiveInMillis()` Return the time to live for this object in milliseconds.
    `int` | `getTimeToLiveInSeconds()` Return the time to live for this object in seconds.
    `boolean` | `hasTimeout()` Return whether this object has an associated timeout.
    `boolean` | `isOpen()` Return whether there are still open references to this holder.
    `boolean` | `isRollbackOnly()` Return whether the resource transaction is marked as rollback-only.
    `boolean` | `isSynchronizedWithTransaction()` Return whether the resource is synchronized with a transaction.
    `boolean` | `isVoid()` Determine whether this holder is considered as 'void', i.e.
    `void` | `released()` Decrease the reference count by one because the holder has been released (i.e.
    `void` | `requested()` Increase the reference count by one because the holder has been requested (i.e.
    `void` | `reset()` Reset this resource holder - transactional state as well as reference count.
    `void` | `setRollbackOnly()` Mark the resource transaction as rollback-only.
    `void` | `setSynchronizedWithTransaction(boolean synchronizedWithTransaction)` Mark the resource as synchronized with a transaction.
    `void` | `setTimeoutInMillis(long millis)` Set the timeout for this object in milliseconds.
    `void` | `setTimeoutInSeconds(int seconds)` Set the timeout for this object in seconds.
    `void` | `unbound()` Notify this holder that it has been unbound from transaction synchronization.

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

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

- - ### Constructor Detail

    - #### ResourceHolderSupport

          public ResourceHolderSupport()

  - ### Method Detail

    - #### setSynchronizedWithTransaction

          public void setSynchronizedWithTransaction(boolean synchronizedWithTransaction)

      Mark the resource as synchronized with a transaction.

    - #### isSynchronizedWithTransaction

          public boolean isSynchronizedWithTransaction()

      Return whether the resource is synchronized with a transaction.

    - #### setRollbackOnly

          public void setRollbackOnly()

      Mark the resource transaction as rollback-only.

    - #### isRollbackOnly

          public boolean isRollbackOnly()

      Return whether the resource transaction is marked as rollback-only.

    - #### setTimeoutInSeconds

          public void setTimeoutInSeconds(int seconds)

      Set the timeout for this object in seconds.
      Parameters:
        `seconds` - number of seconds until expiration

    - #### setTimeoutInMillis

          public void setTimeoutInMillis(long millis)

      Set the timeout for this object in milliseconds.
      Parameters:
        `millis` - number of milliseconds until expiration

    - #### hasTimeout

          public boolean hasTimeout()

      Return whether this object has an associated timeout.

    - #### getDeadline

          public Date getDeadline()

      Return the expiration deadline of this object.
      Returns:
        the deadline as Date object

    - #### getTimeToLiveInSeconds

          public int getTimeToLiveInSeconds()

      Return the time to live for this object in seconds. Rounds up eagerly, e.g. 9.00001 still to 10.
      Returns:
        number of seconds until expiration
      Throws:
        `TransactionTimedOutException` - if the deadline has already been reached

    - #### getTimeToLiveInMillis

          public long getTimeToLiveInMillis()
                                     throws TransactionTimedOutException

      Return the time to live for this object in milliseconds.
      Returns:
        number of millseconds until expiration
      Throws:
        `TransactionTimedOutException` - if the deadline has already been reached

    - #### requested

          public void requested()

      Increase the reference count by one because the holder has been requested (i.e. someone requested the resource held by it).

    - #### released

          public void released()

      Decrease the reference count by one because the holder has been released (i.e. someone released the resource held by it).

    - #### isOpen

          public boolean isOpen()

      Return whether there are still open references to this holder.

    - #### clear

          public void clear()

      Clear the transactional state of this resource holder.

    - #### reset

          public void reset()

      Reset this resource holder - transactional state as well as reference count.
      Specified by:
        `reset` in interface `ResourceHolder`

    - #### unbound

          public void unbound()

      Description copied from interface: `ResourceHolder`
      Notify this holder that it has been unbound from transaction synchronization.
      Specified by:
        `unbound` in interface `ResourceHolder`

    - #### isVoid

          public boolean isVoid()

      Description copied from interface: `ResourceHolder`
      Determine whether this holder is considered as 'void', i.e. as a leftover from a previous thread.
      Specified by:
        `isVoid` in interface `ResourceHolder`