如何在jdbctemplate中为两个oracle不同的数据源创建单个事务管理器

时间:2016-05-20 07:49:22

标签: java spring transactions jdbctemplate

我是spring jdbc模板的新手。我想为两个不同的数据源创建一个事务管理器。这是我的配置细节

<bean id="dataSource1"
        class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName">
            <value>oracle.jdbc.driver.OracleDriver</value>
        </property>
        <property name="url">
            <value>jdbc racle:thin:@localhost:1527/Hardua</value>
        </property>
        <property name="username">
            <value>selva</value>
        </property>
        <property name="password">
            <value>selva</value>
        </property>
</bean>
<bean id="dataSource2"
        class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName">
            <value>oracle.jdbc.driver.OracleDriver</value>
        </property>
        <property name="url">
            <value>jdbc racle:thin:@localhost:1527/Jaise</value>
        </property>
        <property name="username">
            <value>selva</value>
        </property>
        <property name="password">
            <value>selva</value>
        </property>
</bean>


<bean id="transactionManager"
        class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource1"></property>
        <property name="dataSource" ref="dataSource2"></property>
</bean>

<bean id="jdbcTemplate1 class="org.springframework.jdbc.core.JdbcTemplate">
        <property name="dataSource" ref="dataSource1"></property>
</bean>
<bean id="jdbcTemplate2 class="org.springframework.jdbc.core.JdbcTemplate">
        <property name="dataSource" ref="dataSource2"></property>
</bean>

我尝试了上述内容,但数据库中没有发生回滚。这是实现交易的正确方法吗? 任何帮助将不胜感激!!!!

1 个答案:

答案 0 :(得分:0)

在这种情况下,你需要一个

JTA Transaction Manager (Global transaction Manager- 2 phase commit).

您必须使用JTA实现,例如spring自己的JtaTransactionManager而不是DatasourceTransactionManager,这是一个本地事务管理器。