<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="" xmlns:xsi="" xmlns:context="" xmlns:aop="" xmlns:tx="" xsi:schemaLocation=" "> <!-- 注解事务驱动 --> <tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true"/> <!-- JTA是Sun公司提出的标准化分布式事务访问的Java接口规范。 手动编码JTA Context context=new InitialContext(); UserTransaction ut=(UserTransaction)context.lookup("javax.transaction.UserTransaction") ut.commit(); ut.rollback(); Java Transaction API(JTA)是一个独立于实现和协议的高级API,它使应用程序和应用服务器可以访问事务。 JTA规范定义的只是一套Java接口定义,具体的实现留给了相应的提供商去实现,各Java EE应用服务器需要提供对JTA的支持。 另外,除了可以使用绑定到各Java EE应用服务器的JTA实现之外,Java平台上也存在几个独立的并且比较成熟的JTA实现产品: 1、JTA 2、Atomikos 3、JBoss Transactions Tomcat不支持JTA,所以使用Spring实现跨数据库事务管理 JOTM(Java Open Transaction Manager)是一个由ObjectWeb组织开发的全功能的、开放源代码的单独事务管理器,并且完全兼容JTA(Java Transaction API) --> <bean id="jotm" class="org.springframework.transaction.jta.JotmFactoryBean"></bean> <!--JTA事务管理器--> <bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager"> <!-- 指定userTransaction属性引用JOTM本地实例 --> <property name="userTransaction" ref="jotm"/> </bean> <!--对应MySql数据库construct_bank的XAPool配置,内容包含了一XA数据源--> <bean id="constructDS" class="org.enhydra.jdbc.pool.StandardXAPoolDataSource"> <property name="dataSource"> <!--内部XA数据源 配置MySql数据库--> <bean class="org.enhydra.jdbc.standard.StandardXADataSource"> <property name="transactionManager" ref="jotm"/> <property name="driverName" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://127.0.0.1:3306/construct_bank"/> </bean> </property> <property name="user" value="root"/> <property name="password" value="root"/> </bean> <bean id="sessionFactory_constructbank" class="org.springframework.hibernate3.LocalSessionFactoryBean"> <property name="dataSource"> <ref bean="constructDS"/> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop> <prop key="hibernate.hbm2ddl.auto">update</prop> <prop key="hibernate.show_sql">true</prop> <prop key="hibernate.format_sql>true</prop> </props> </property> <property name="mappingResources"> <list> <value>org/oneedu/pojo/User.hbm.xml</value> <value>org/oneedu/pojo/Card.hbm.xml</value> </list> </property> </bean> <bean id="businessDS" class="org.enhydra.jdbc.pool.StandardXAPoolDataSource"> <property name="dataSource"> <!--内部XA数据源 配置MySql数据源--> <bean class="org.enhydra.jdbc.standard.StandardXADataSource"> <property name="transactionManager" ref="jotm"/> <property name="driverName" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://127.0.0.1:3306/business_bank"/> </bean> </property> <property name="user" value="root"/> <property name="password" value="root"/> </bean> <bean id="sessionFactory_businessbank" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="datasource"> <ref bean="businessDS"> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop> <prop key="hibernate.hbm2ddl.auto">update</prop> <prop key="hibernate.show_sql">true</prop> <prop key="hibernate.format_sql">true</prop> <props> </property> <property name="mappingResources"> <list> <value>org/oneedu/pojo/User2.hbm.xml</value> <value>org/oneedu/pojo/Card2.hbm.xml</value> </list> </property> </bean> <bean id="hibernateTemplate_constructbank" class="org.springframework.orm.hibernate3.HibernateTemplate"> <property name="sessionFactory"> <ref local="sessionFactory_Constructbank"/> </property> </bean> <bean id="hibernateTemplate_constructbank" class="org.springframework.orm.hibernate3.Hibernatetemplate"> <property name="sessionFactory"> <ref local="sessionFactory_businessbank"/> </property> </bean> </beans>