Example usage for org.springframework.jca.cci.connection ConnectionHolder getConnection

List of usage examples for org.springframework.jca.cci.connection ConnectionHolder getConnection

Introduction

In this page you can find the example usage for org.springframework.jca.cci.connection ConnectionHolder getConnection.

Prototype

public Connection getConnection() 

Source Link

Usage

From source file:org.springframework.jca.cci.connection.ConnectionFactoryUtils.java

/**
 * Actually obtain a CCI Connection from the given ConnectionFactory.
 * Same as {@link #getConnection}, but throwing the original ResourceException.
 * <p>Is aware of a corresponding Connection bound to the current thread, for example
 * when using {@link CciLocalTransactionManager}. Will bind a Connection to the thread
 * if transaction synchronization is active (e.g. if in a JTA transaction).
 * <p>Directly accessed by {@link TransactionAwareConnectionFactoryProxy}.
 * @param cf the ConnectionFactory to obtain Connection from
 * @return a CCI Connection from the given ConnectionFactory
 * @throws ResourceException if thrown by CCI API methods
 * @see #doReleaseConnection//ww  w  .  j  a v  a 2s .co m
 */
public static Connection doGetConnection(ConnectionFactory cf) throws ResourceException {
    Assert.notNull(cf, "No ConnectionFactory specified");

    ConnectionHolder conHolder = (ConnectionHolder) TransactionSynchronizationManager.getResource(cf);
    if (conHolder != null) {
        return conHolder.getConnection();
    }

    logger.debug("Opening CCI Connection");
    Connection con = cf.getConnection();

    if (TransactionSynchronizationManager.isSynchronizationActive()) {
        logger.debug("Registering transaction synchronization for CCI Connection");
        conHolder = new ConnectionHolder(con);
        conHolder.setSynchronizedWithTransaction(true);
        TransactionSynchronizationManager.registerSynchronization(new ConnectionSynchronization(conHolder, cf));
        TransactionSynchronizationManager.bindResource(cf, conHolder);
    }

    return con;
}

From source file:org.springframework.jca.cci.connection.ConnectionFactoryUtils.java

/**
 * Determine whether the given JCA CCI Connection is transactional, that is,
 * bound to the current thread by Spring's transaction facilities.
 * @param con the Connection to check/*from  w w  w .  j ava  2s  . c  o m*/
 * @param cf the ConnectionFactory that the Connection was obtained from
 * (may be {@code null})
 * @return whether the Connection is transactional
 */
public static boolean isConnectionTransactional(Connection con, @Nullable ConnectionFactory cf) {
    if (cf == null) {
        return false;
    }
    ConnectionHolder conHolder = (ConnectionHolder) TransactionSynchronizationManager.getResource(cf);
    return (conHolder != null && conHolder.getConnection() == con);
}