您的位置:首页 > 编程语言 > Java开发

spring集成jotm实现JTA分布式事务管理

2012-11-27 17:50 106 查看
下载jotm-2.0.11.MR5,将其lib下的jar包引入到project 的类路径下:



在applicationContext.xml中配置如下:

<!-- jotm实体类 -->
<bean id="jotm" class="org.springframework.transaction.jta.JotmFactoryBean" />

<!-- orcle数据源 -->
<bean id="oracleJta" 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="oracle.jdbc.driver.OracleDriver"/>
<property name="url" value="jdbc:oracle:thin:@168.9.202.49:1521:test"/>
<property name="user" value="orac"/>
<property name="password" value="orac"/>
</bean>
</property>
<property name="user" value="orac"/>
<property name="password" value="orac"/>
</bean>
<!-- mysql数据源 -->
<bean id="mysqlJta" 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="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:MySQL://localhost:3309/test"/>
<property name="user" value="root"/>
<property name="password" value="mysql"/>
</bean>
</property>
<property name="user" value="root"/>
<property name="password" value="mysql"/>
</bean>

<!-- jta事务管理器 -->
<bean id="jtaManager" class="org.springframework.transaction.jta.JtaTransactionManager">
<property name="userTransaction" ref="jotm"/> <!-- 指定userTransaction属性引用jotm本地实例 -->
</bean>

<!-- JTA事务传播特性 -->
<tx:advice id="txAdviceJta" transaction-manager="txManager">
<tx:attributes>
<tx:method name="Jta*"     isolation="DEFAULT" propagation="REQUIRED" rollback-for="Exception"/>
<tx:method name="*" read-only="true"/>
</tx:attributes>
</tx:advice>

<aop:config>
<aop:advisor pointcut="execution(* com.xxxxl.service.impl..*(..))"   advice-ref="txAdviceJta" />
</aop:config>

<bean id="testMysqlDao" class="com.xxxxl.TestMysqlDaoImpl" scope="prototype">
<property name="dataSource" ref="mysqlJta"></property>
</bean>
<bean id="testOracleDao" class="com.xxxxl.testOracleDaoImpl" scope="prototype">
<property name="dataSource" ref="oracleJta"></property>
</bean>

这就将事务进行了配置管理,如果想实现更为灵活更为细小的事务管理那么则不用配置事务的传播特性(<tx:advice>标签中的配置)

和控制反转(<aop:config>标签中的部分),需要在代码中通过DataSourceTransactionManager事务管理器类进行事务管理。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: