## org.springframework.jca.cci.connection
Class ConnectionFactoryUtils

    java.lang.Object
      org.springframework.jca.cci.connection.ConnectionFactoryUtils

    public abstract class ConnectionFactoryUtils

extends Object

Helper class that provides static methods for obtaining CCI Connections from a `ConnectionFactory`. Includes special support for Spring-managed transactional Connections, e.g. managed by `CciLocalTransactionManager` or `JtaTransactionManager`.

Used internally by `CciTemplate`, Spring's CCI operation objects and the `CciLocalTransactionManager`. Can also be used directly in application code.

Since:
  1.2
Author:
  Thierry Templier, Juergen Hoeller
See Also:
  `getConnection(javax.resource.cci.ConnectionFactory)`, `releaseConnection(javax.resource.cci.Connection, javax.resource.cci.ConnectionFactory)`, `CciLocalTransactionManager`, `JtaTransactionManager`, `TransactionSynchronizationManager`

Constructor Summary
`ConnectionFactoryUtils()`

Method Summary
`static Connection` `doGetConnection(ConnectionFactory cf)` Actually obtain a CCI Connection from the given ConnectionFactory.
`static void` `doReleaseConnection(Connection con, ConnectionFactory cf)` Actually close the given Connection, obtained from the given ConnectionFactory.
`static Connection` `getConnection(ConnectionFactory cf)` Obtain a Connection from the given ConnectionFactory.
`static Connection` `getConnection(ConnectionFactory cf, ConnectionSpec spec)` Obtain a Connection from the given ConnectionFactory.
`static boolean` `isConnectionTransactional(Connection con, ConnectionFactory cf)` Determine whether the given JCA CCI Connection is transactional, that is, bound to the current thread by Spring's transaction facilities.
`static void` `releaseConnection(Connection con, ConnectionFactory cf)` Close the given Connection, obtained from the given ConnectionFactory, if it is not managed externally (that is, not bound to the thread).

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### ConnectionFactoryUtils

    public ConnectionFactoryUtils()

Method Detail

### getConnection

    public static Connection getConnection(ConnectionFactory cf)
                                    throws CannotGetCciConnectionException

  Obtain a Connection from the given ConnectionFactory. Translates ResourceExceptions into the Spring hierarchy of unchecked generic data access exceptions, simplifying calling code and making any exception that is thrown more meaningful.

  Is aware of a corresponding Connection bound to the current thread, for example when using `CciLocalTransactionManager`. Will bind a Connection to the thread if transaction synchronization is active (e.g. if in a JTA transaction).

  Parameters:
    `cf` - the ConnectionFactory to obtain Connection from
  Returns:
    a CCI Connection from the given ConnectionFactory
  Throws:
    `CannotGetCciConnectionException` - if the attempt to get a Connection failed
  See Also:
    `releaseConnection(javax.resource.cci.Connection, javax.resource.cci.ConnectionFactory)`

### getConnection

    public static Connection getConnection(ConnectionFactory cf,
                                           ConnectionSpec spec)
                                    throws CannotGetCciConnectionException

  Obtain a Connection from the given ConnectionFactory. Translates ResourceExceptions into the Spring hierarchy of unchecked generic data access exceptions, simplifying calling code and making any exception that is thrown more meaningful.

  Is aware of a corresponding Connection bound to the current thread, for example when using `CciLocalTransactionManager`. Will bind a Connection to the thread if transaction synchronization is active (e.g. if in a JTA transaction).

  Parameters:
    `cf` - the ConnectionFactory to obtain Connection from
    `spec` - the ConnectionSpec for the desired Connection (may be `null`). Note: If this is specified, a new Connection will be obtained for every call, without participating in a shared transactional Connection.
  Returns:
    a CCI Connection from the given ConnectionFactory
  Throws:
    `CannotGetCciConnectionException` - if the attempt to get a Connection failed
  See Also:
    `releaseConnection(javax.resource.cci.Connection, javax.resource.cci.ConnectionFactory)`

### doGetConnection

    public static Connection doGetConnection(ConnectionFactory cf)
                                      throws ResourceException

  Actually obtain a CCI Connection from the given ConnectionFactory. Same as `getConnection(javax.resource.cci.ConnectionFactory)`, but throwing the original ResourceException.

  Is aware of a corresponding Connection bound to the current thread, for example when using `CciLocalTransactionManager`. Will bind a Connection to the thread if transaction synchronization is active (e.g. if in a JTA transaction).

  Directly accessed by `TransactionAwareConnectionFactoryProxy`.

  Parameters:
    `cf` - the ConnectionFactory to obtain Connection from
  Returns:
    a CCI Connection from the given ConnectionFactory
  Throws:
    `ResourceException` - if thrown by CCI API methods
  See Also:
    `doReleaseConnection(javax.resource.cci.Connection, javax.resource.cci.ConnectionFactory)`

### isConnectionTransactional

    public static boolean isConnectionTransactional(Connection con,
                                                    ConnectionFactory cf)

  Determine whether the given JCA CCI Connection is transactional, that is, bound to the current thread by Spring's transaction facilities.

  Parameters:
    `con` - the Connection to check
    `cf` - the ConnectionFactory that the Connection was obtained from (may be `null`)
  Returns:
    whether the Connection is transactional

### releaseConnection

    public static void releaseConnection(Connection con,
                                         ConnectionFactory cf)

  Close the given Connection, obtained from the given ConnectionFactory, if it is not managed externally (that is, not bound to the thread).

  Parameters:
    `con` - the Connection to close if necessary (if this is `null`, the call will be ignored)
    `cf` - the ConnectionFactory that the Connection was obtained from (can be `null`)
  See Also:
    `getConnection(javax.resource.cci.ConnectionFactory)`

### doReleaseConnection

    public static void doReleaseConnection(Connection con,
                                           ConnectionFactory cf)
                                    throws ResourceException

  Actually close the given Connection, obtained from the given ConnectionFactory. Same as `releaseConnection(javax.resource.cci.Connection, javax.resource.cci.ConnectionFactory)`, but throwing the original ResourceException.

  Directly accessed by `TransactionAwareConnectionFactoryProxy`.

  Parameters:
    `con` - the Connection to close if necessary (if this is `null`, the call will be ignored)
    `cf` - the ConnectionFactory that the Connection was obtained from (can be `null`)
  Throws:
    `ResourceException` - if thrown by JCA CCI methods
  See Also:
    `doGetConnection(javax.resource.cci.ConnectionFactory)`