Example usage for org.springframework.transaction.jta JtaTransactionManager getTransactionManager

List of usage examples for org.springframework.transaction.jta JtaTransactionManager getTransactionManager

Introduction

In this page you can find the example usage for org.springframework.transaction.jta JtaTransactionManager getTransactionManager.

Prototype

@Nullable
public TransactionManager getTransactionManager() 

Source Link

Document

Return the JTA TransactionManager that this transaction manager uses, if any.

Usage

From source file:nz.co.senanque.hibernate.SpringJtaPlatformAdapter.java

public void setJtaTransactionManager(JtaTransactionManager jtaTransactionManager) {
    sTransactionManager = jtaTransactionManager.getTransactionManager();
    sUserTransaction = jtaTransactionManager.getUserTransaction();
}

From source file:io.strandberg.xadisk.XADiskSessionFactory.java

@Autowired
public XADiskSessionFactory(JtaTransactionManager jtaTransactionManager,
        StandaloneFileSystemConfiguration standaloneFileSystemConfiguration) throws InterruptedException {
    this.transactionManager = jtaTransactionManager.getTransactionManager();
    this.standaloneFileSystemConfiguration = standaloneFileSystemConfiguration;
    xaSessionMap = Collections.synchronizedMap(new WeakHashMap<Transaction, XASession>());
}

From source file:com.baomidou.hibernateplus.HibernateSpringSessionFactoryBuilder.java

/**
 * Set the Spring {@link JtaTransactionManager} or the JTA {@link TransactionManager}
 * to be used with Hibernate, if any. Allows for using a Spring-managed transaction
 * manager for Hibernate 5's session and cache synchronization, with the
 * "hibernate.transaction.jta.platform" automatically set to it.
 * <p>A passed-in Spring {@link JtaTransactionManager} needs to contain a JTA
 * {@link TransactionManager} reference to be usable here, except for the WebSphere
 * case where we'll automatically set {@code WebSphereExtendedJtaPlatform} accordingly.
 * <p>Note: If this is set, the Hibernate settings should not contain a JTA platform
 * setting to avoid meaningless double configuration.
 *///  w  ww  .  j  a  v a  2s  . co m
public HibernateSpringSessionFactoryBuilder setJtaTransactionManager(Object jtaTransactionManager) {
    Assert.notNull(jtaTransactionManager, "Transaction manager reference must not be null");

    if (jtaTransactionManager instanceof JtaTransactionManager) {
        boolean webspherePresent = ClassUtils.isPresent("com.ibm.wsspi.uow.UOWManager",
                getClass().getClassLoader());
        if (webspherePresent) {
            getProperties().put(AvailableSettings.JTA_PLATFORM,
                    "org.hibernate.engine.transaction.jta.platform.internal.WebSphereExtendedJtaPlatform");
        } else {
            JtaTransactionManager jtaTm = (JtaTransactionManager) jtaTransactionManager;
            if (jtaTm.getTransactionManager() == null) {
                throw new IllegalArgumentException(
                        "Can only apply JtaTransactionManager which has a TransactionManager reference set");
            }
            getProperties().put(AvailableSettings.JTA_PLATFORM,
                    new HibernateConfigurableJtaPlatform(jtaTm.getTransactionManager(),
                            jtaTm.getUserTransaction(), jtaTm.getTransactionSynchronizationRegistry()));
        }
    } else if (jtaTransactionManager instanceof TransactionManager) {
        getProperties().put(AvailableSettings.JTA_PLATFORM,
                new HibernateConfigurableJtaPlatform((TransactionManager) jtaTransactionManager, null, null));
    } else {
        throw new IllegalArgumentException(
                "Unknown transaction manager type: " + jtaTransactionManager.getClass().getName());
    }

    // Hibernate 5.1/5.2: manually enforce connection release mode AFTER_STATEMENT (the JTA default)
    try {
        // Try Hibernate 5.2
        AvailableSettings.class.getField("CONNECTION_HANDLING");
        getProperties().put("hibernate.connection.handling_mode",
                "DELAYED_ACQUISITION_AND_RELEASE_AFTER_STATEMENT");
    } catch (NoSuchFieldException ex) {
        // Try Hibernate 5.1
        try {
            AvailableSettings.class.getField("ACQUIRE_CONNECTIONS");
            getProperties().put("hibernate.connection.release_mode", "AFTER_STATEMENT");
        } catch (NoSuchFieldException ex2) {
            // on Hibernate 5.0.x or lower - no need to change the default there
        }
    }

    return this;
}