我们可以在Spring中使用DBCP 2或Tomcat连接池进行分布式事务吗?这些连接池可以与JOTM或Atomikos一起使用吗?

我们可以在Spring中使用DBCP 2或Tomcat连接池进行分布式事务吗?这些连接池可以与JOTM或Atomikos一起使用吗?,spring,distributed-transactions,apache-commons-dbcp,atomikos,tomcat-jdbc,Spring,Distributed Transactions,Apache Commons Dbcp,Atomikos,Tomcat Jdbc,最初,我对多个数据源使用不同的事务管理器。但是,如果其中一个数据源出现事务失败,我就无法管理所有数据源上的回滚。我希望在春季使用单个事务管理器管理多个数据源。所以我选择使用JOTM或Atomikos。这两个事务管理器都使用XA连接池(org.enhydra.jdbc.pool.StandardXAPoolDataSource)。但在我的项目中,我只允许使用DBCP 2(org.apache.commons.DBCP.BasicDataSource)或Tomcat连接池(org.apache.To

最初,我对多个数据源使用不同的事务管理器。但是,如果其中一个数据源出现事务失败,我就无法管理所有数据源上的回滚。我希望在春季使用单个事务管理器管理多个数据源。所以我选择使用JOTM或Atomikos。这两个事务管理器都使用XA连接池(org.enhydra.jdbc.pool.StandardXAPoolDataSource)。但在我的项目中,我只允许使用DBCP 2(org.apache.commons.DBCP.BasicDataSource)或Tomcat连接池(org.apache.Tomcat.jdbc.Pool.DataSource)。是否可以将此连接池与JOTM或Atomikos一起使用。请有人在这方面帮助我以及配置示例。下面是我的配置详细信息

如果有任何其他可能的方法来实现这一点,也请提供帮助

bean id="jotm" class="org.springframework.transaction.jta.JotmFactoryBean"/>

    <bean id="txManager" class="org.springframework.transaction.jta.JtaTransactionManager"> 
    <property name="userTransaction" ref="jotm" /> 
    </bean>

    <bean id="dataSource1" class="org.enhydra.jdbc.pool.StandardXAPoolDataSource" destroy-method="shutdown"> 
    <property name="dataSource"> 
    <bean class ="org.enhydra.jdbc.standard.StandardXADataSource " destroy-method ="shutdown"> 
    <property name="transactionManager" ref="jotm" /> 
    <property name="driverName" value="${jdbc.d1.driver}" /> 
    <property name ="url" value = "${jdbc.d1.url}" /> 
    </bean> 
    </property> 
    <property name="user" value="${jdbc.d1.username}" /> 
    <property name = "password" value="${jdbc.d1.password}" /> 
    </bean> 

    <bean id="dataSource2" class="org.enhydra.jdbc.pool.StandardXAPoolDataSource" destroy-method="shutdown">
    <property name="dataSource"> 
    <bean class ="org. enhydra.jdbc.standard.StandardXADataSource " destroy-method ="shutdown"> 
    <property name="transactionManager" ref="jotm" /> 
    <property name="driverName" value="${jdbc.d2.driver}" /> 
    <property name="url" value="${jdbc.d2.url}" /> 
    </bean> 
    </property> 
    <property name="user" value="${jdbc.d2.username}" /> 
    <property name = "password" value ="${jdbc.d2.password}" /> 
    </bean>