一:POM.xml
<!-- JTA事物所需配置 -->
<dependency>
<groupId>com.atomikos</groupId>
<artifactId>transactions-jdbc</artifactId>
<version>3.7.0</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.6.1</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-nop</artifactId>
<version>1.6.2</version>
</dependency>
<!-- JTA事物所需配置 -->
二:spring事物配置
<bean id="oracleDS2" class="com.atomikos.jdbc.AtomikosDataSourceBean"
init-method="init" destroy-method="close">
<description>oracle xa datasource</description>
<property name="uniqueResourceName">
<value>oracle_ds2</value>
</property>
<property name="xaDataSourceClassName">
<value>oracle.jdbc.xa.client.OracleXADataSource</value>
</property>
<property name="xaProperties">
<props>
<prop key="user">gadbusr</prop>
<prop key="password">gadbusr</prop>
<prop key="URL">jdbc:oracle:thin:@192.168.0.59:1521:techdb</prop>
</props>
</property>
<!-- 连接池里面连接的个数? -->
<property name="poolSize" value="3"/>
</bean>
<bean id="oracleDS1" class="com.atomikos.jdbc.AtomikosDataSourceBean"
init-method="init" destroy-method="close">
<description>oracle xa datasource</description>
<property name="uniqueResourceName">
<value>oracle_ds1</value>
</property>
<property name="xaDataSourceClassName">
<value>oracle.jdbc.xa.client.OracleXADataSource</value>
</property>
<property name="xaProperties">
<props>
<prop key="user">esdbusr</prop>
<prop key="password">esdbusr</prop>
<prop key="URL">jdbc:oracle:thin:@192.168.0.127:1521:esdb</prop>
</props>
</property>
<!-- 连接池里面连接的个数? -->
<property name="poolSize" value="3"/>
</bean>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd">
<context:property-placeholder
location="classpath:jdbc.properties,file:/app/SFiles/usb/install/saturn-config-est.properties" />
<context:annotation-config />
<!-- atomikos事务管理器 -->
<bean id="atomikosTransactionManager" class="com.atomikos.icatch.jta.UserTransactionManager"
init-method="init" destroy-method="close">
<description>UserTransactionManager</description>
<property name="forceShutdown">
<value>true</value>
</property>
</bean>
<bean id="atomikosUserTransaction" class="com.atomikos.icatch.jta.UserTransactionImp">
<property name="transactionTimeout" value="300" />
</bean>
<!-- spring 事务管理器 -->
<bean id="springTransactionManager"
class="org.springframework.transaction.jta.JtaTransactionManager">
<property name="transactionManager">
<ref bean="atomikosTransactionManager" />
</property>
<property name="userTransaction">
<ref bean="atomikosUserTransaction" />
</property>
</bean>
<!-- spring 事务模板 我在项目当中用的是编程式事务 -->
<bean id="transactionTemplate"
class="org.springframework.transaction.support.TransactionTemplate">
<property name="transactionManager">
<ref bean="springTransactionManager" />
</property>
</bean>
<bean id="sqlSessionFactory2" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="oracleDS2" />
<property name="typeAliasesPackage"
value="com.huifu.est.common.dal.model2,com.huifu.est.common.dal.model.extdo2" />
<property name="plugins">
<list>
<ref bean="mybatisCommonInterceptor2" />
</list>
</property>
</bean>
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.huifu.est.common.dal.dao2" />
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory2" />
</bean>
<bean name="mybatisCommonInterceptor2" class="com.huifu.saturn.common.log.MybatisCommonInterceptor">
</bean>
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="oracleDS1" />
<property name="typeAliasesPackage"
value="com.huifu.est.common.dal.model,com.huifu.est.common.dal.model.extdo" />
<property name="plugins">
<list>
<ref bean="mybatisCommonInterceptor" />
</list>
</property>
</bean>
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.huifu.est.common.dal.dao" />
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
</bean>
<bean name="mybatisCommonInterceptor" class="com.huifu.saturn.common.log.MybatisCommonInterceptor">
</bean>
<!-- spring atomikos 配置 结束 -->
</beans>
三:编程式事物code
@Override
public int updateTest() {
try {
transactionTemplate.execute(new TransactionCallback<String>() {
@Override
public String doInTransaction(TransactionStatus status) {
MailLogDO mailLogDo = new MailLogDO();
mailLogDo.setMailId("AD014750097AD");
mailLogDo.setAcctDate("20130317");
int i = mailLogMapper.updateByMailId(mailLogDo);
System.out.println("xx=" + i);
FrzLogDO frzLogDo = new FrzLogDO();
frzLogDo.setSysSeqId("00489671");
frzLogDo.setTransAmt("51.00");
i = frzLogMapper.updateById(frzLogDo);
System.out.println("xx=" + i);
return null;
}
});
} catch (Exception e) {
e.printStackTrace();
}
return 0;
}