2

最初は、複数のデータ ソースに対して異なるトランザクション マネージャーを使用していました。しかし、データ ソースの 1 つにトランザクション エラーが発生した場合、すべてのデータ ソースのロールバックを管理するのに問題がありました。Spring で単一のトランザクション マネージャーを使用して複数のデータ ソースを管理したいと考えています。そこで、JOTM または Atomikos を使用することにしました。これらのトランザクション マネージャーはどちらもXA 接続プール (org.enhydra.jdbc.pool.StandardXAPoolDataSource)を使用します。しかし、私のプロジェクトでは、DBCP 2(org.apache.commons.dbcp.BasicDataSource) または Tomcat Connection Pool(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>  

また、これを達成するための他の可能な方法があれば助けてください。

4

0 に答える 0