public abstract class ConnectionFactoryUtils
extends java.lang.Object
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.
getConnection(javax.resource.cci.ConnectionFactory)
,
releaseConnection(javax.resource.cci.Connection, javax.resource.cci.ConnectionFactory)
,
CciLocalTransactionManager
,
JtaTransactionManager
,
TransactionSynchronizationManager
Constructor and Description |
---|
ConnectionFactoryUtils() |
Modifier and Type | Method and Description |
---|---|
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).
|
public static Connection getConnection(ConnectionFactory cf) throws CannotGetCciConnectionException
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).
cf
- the ConnectionFactory to obtain Connection fromCannotGetCciConnectionException
- if the attempt to get a Connection failedreleaseConnection(javax.resource.cci.Connection, javax.resource.cci.ConnectionFactory)
public static Connection getConnection(ConnectionFactory cf, @Nullable ConnectionSpec spec) throws CannotGetCciConnectionException
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).
cf
- the ConnectionFactory to obtain Connection fromspec
- 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.CannotGetCciConnectionException
- if the attempt to get a Connection failedreleaseConnection(javax.resource.cci.Connection, javax.resource.cci.ConnectionFactory)
public static Connection doGetConnection(ConnectionFactory cf) throws ResourceException
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
.
cf
- the ConnectionFactory to obtain Connection fromResourceException
- if thrown by CCI API methodsdoReleaseConnection(javax.resource.cci.Connection, javax.resource.cci.ConnectionFactory)
public static boolean isConnectionTransactional(Connection con, @Nullable ConnectionFactory cf)
con
- the Connection to checkcf
- the ConnectionFactory that the Connection was obtained from
(may be null
)public static void releaseConnection(@Nullable Connection con, @Nullable ConnectionFactory cf)
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
)getConnection(javax.resource.cci.ConnectionFactory)
public static void doReleaseConnection(@Nullable Connection con, @Nullable ConnectionFactory cf) throws ResourceException
releaseConnection(javax.resource.cci.Connection, javax.resource.cci.ConnectionFactory)
, but throwing the original ResourceException.
Directly accessed by TransactionAwareConnectionFactoryProxy
.
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
)ResourceException
- if thrown by JCA CCI methodsdoGetConnection(javax.resource.cci.ConnectionFactory)