在Spring中使用JTA事务管理(二)
?
转载<bean id="jotm"class="org.springframework.transaction.jta.JotmFactoryBean"?/>①JOTM本地实例??②JTA事务管理器?<bean id="txManager"class="org.springframework.transaction.jta.JtaTransactionManager"><property name="userTransaction"?ref="jotm"?/>?②-1:指定userTransaction属性?</bean>③XAPool配置,内部包含了一个XA数据源,对应topicdb数据库?<bean id="topicDS"class="org.enhydra.jdbc.pool.StandardXAPoolDataSource"destroy-method="shutdown"><property name="dataSource">③-1:内部XA数据源?<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/topicdb"?/></bean></property><property name="user"?value="root"?/><property name="password"value="1234"?/></bean>④按照③相似的方式配置另一个XAPool,对应postdb数据库,?<bean id="postDS"class="org.enhydra.jdbc.pool.StandardXAPoolDataSource"destroy-method="shutdown"><property name="dataSource"><beanclass="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/postdb"?/></bean></property><property name="user"?value="root"?/><property name="password"value="1234"?/></bean>⑤配置访问topicDB数据源的Spring JDBC模板?<bean id="topicTemplate"class="org.springframework.jdbc.core.JdbcTemplate"><property name="dataSource"?ref="topicDS"?/></bean>⑥配置访问postDB数据源的Spring JDBC模板?<bean id="postTemplate"class="org.springframework.jdbc.core.JdbcTemplate"><property name="dataSource"?ref="postDS"?/></bean>⑦基于topicTemplate数据源的topicDao?<bean id="topicDao"class="com.baobaotao.dao.jdbc.TopicJdbcDao"><property name="jdbcTemplate"?ref="topicTemplate"?/></bean>⑧基于postTemplate数据源的postDao?<bean id="postDao"class="com.baobaotao.dao.jdbc.PostJdbcDao"><property name="jdbcTemplate"?ref="postTemplate"?/></bean>⑨进行跨数据库JTA事务的业务类?<bean id="bbtForum"class="com.baobaotao.service.impl.BbtForumImpl"><property name="topicDao"?ref="topicDao"?/><property name="postDao"ref="postDao"?/></bean>⑩对BbtForumImpl业务类中的@Transaction注解进行驱动?<tx:annotation-driven transaction-manager="txManager"?/>????首先,我们在①处通过Spring所提供的JotmFactoryBean创建一个本地JOTM实例,该实例同时实现了??javax.transaction.UserTransaction和javax.transaction.TransactionManager接口,它可以和ObjectWeb的XAPool一起工作。?