1、我先要给大家讲一个概念:spring 的多数据源事务,这是民间的说法。官方的说法是:spring 的分布式事务。明白了这个概念,问题就好解决了。
2、分布式事务的应用场景:工程中使用两个及以上数据库中,就要考虑使用分布式事务管理,否则事务不能回滚。
3、现有两种开源的第三方jar支持spring的分布式事务管理,它们分别是:jotm和Atomikos。通过google可以找到下载的链接,其中atomikos的下载需要先填写email信息,再登录email找到链接去下载。下载地址分别:
1、http://jotm.objectweb.org/
2、http://www.atomikos.com/Main/InstallingTransactionsEssentials
我使用的是jotm。
4、基于spring+ibatis的环境下配置jotm的方法很简单。只城要修改spring数据源的配置及事务的配置及可。以下是我的配置,供参考。
-
- <bean id="jotm" class="org.springframework.transaction.jta.JotmFactoryBean">
- <property name="defaultTimeout" value="500000"/>
- </bean>
-
- <bean id="dataSource" 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="${driverClass}"/>
- <property name="url" value="${jdbcUrl}"/>
- </bean>
- </property>
- <property name="user" value="${user}"/>
- <property name="password" value="${password}"/>
- </bean>
-
- <bean id="dataSourceBbs" 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="${bbs.driverClass}"/>
- <property name="url" value="${bbs.jdbcUrl}"/>
- </bean>
- </property>
- <property name="user" value="${bbs.user}"/>
- <property name="password" value="${bbs.password}"/>
- </bean>
-
-
- <bean id="myJtaManager" class="org.springframework.transaction.jta.JtaTransactionManager">
- <property name="userTransaction" ref="jotm" />
- </bean>
-
-
- <aop:config>
- <aop:pointcut id="serviceOperation" expression="execution(* com.bohai.service.impl.*.*(..))"/>
- <aop:advisor pointcut-ref="serviceOperation" advice-ref="txAdvice" order="0" />
- </aop:config>
-
-
- <tx:advice id="txAdvice" transaction-manager="myJtaManager">
- <tx:attributes>
- <tx:method name="delete*" propagation="REQUIRED" />
- <tx:method name="save*" propagation="REQUIRED" />
- <tx:method name="update*" propagation="REQUIRED" />
- <tx:method name="*" propagation="REQUIRED" />
- <tx:method name="find*" propagation="SUPPORTS" read-only="true"/>
- <tx:method name="get*" propagation="SUPPORTS" read-only="true"/>
- <tx:method name="fetch*" propagation="SUPPORTS" read-only="true"/>
- <tx:method name="*_noTrans" propagation="NOT_SUPPORTED"/>
- </tx:attributes>
- </tx:advice>
5、jtom 还需要一个配置文件 carol.properties ,内容是:
- #JNDI调用协议
- carol.protocols=jrmp
- #不使用CAROL JNDI封装器
- carol.start.jndi=false
- #不启动命名服务器
- carol.start.ns=false
文件放在classpath下面,也就是src下面。
6、需要jtom的以下jar:
7、经过测试,配置是成功的。事务可以回滚。
分享到:
相关推荐
- 在Spring的配置文件中,配置JDBC数据源,这里需要为每个数据库配置一个数据源。 - 配置JOTM事务管理器,通过`UserTransaction`接口进行事务的开始、提交和回滚。 - 使用`PlatformTransactionManager`接口配置...
3. **Ibatis配置**:Ibatis的配置文件中,需要指定数据源为Spring管理的数据源,这样Ibatis就能通过Spring获取数据库连接。同时,定义SQL映射文件,编写对应的XML映射语句。 4. **事务管理**:由于MySQL集群支持...
如果你的服务器支持JNDI,那么需要在服务器配置文件中添加相应的数据源定义,并确保与Spring中的配置一致。 3. 编译和部署:根据你的开发环境,可能需要编译项目(如使用Maven或Gradle),然后将生成的WAR文件部署...
标题中的"jar 源码(spring+ibatis+..)"指的是这个压缩包包含了与Java开发相关的开源框架Spring、MyBatis以及可能的其他库的源代码。这为我们提供了一个深入理解这些流行框架内部工作原理的机会。让我们逐一探讨这些...
在这个数据同步程序中,Spring可能被用来管理Bean,实现事务控制,以及与iBatis的集成。 3. **iBatis**:iBatis是一个SQL映射框架,它将SQL语句与Java代码分离,提高了数据库操作的灵活性和可维护性。在这个例子中...
2. **配置SpringMVC**:在SpringMVC的配置文件中,定义数据源,将数据源指向Mycat服务器。同时,配置Servlet容器如Tomcat,以启动SpringMVC应用。 3. **配置iBatis**:创建SqlSessionFactoryBean,指定配置文件的...
数据源配置确保了Spring能够连接到数据库,事务管理器则用于处理事务的提交和回滚,SqlSessionFactory是IBatis的核心,它创建SqlSession对象,用于执行SQL语句。 接着,我们需要创建MyBatis的Mapper接口和XML配置...
在使用JTA时,你需要确保MyBatis的数据源配置为JNDI数据源,以便于事务的统一管理。 总的来说,Spring配置JTA事务管理是一项关键任务,它确保了在分布式环境下的数据一致性。理解并正确配置JTA事务管理,能够让你的...
因为不同的数据源可能需要不同的事务隔离级别和回滚规则,所以我们需要配置多个PlatformTransactionManager,并根据数据源路由结果选择合适的事务管理器。 6. **注解驱动的多数据源选择** 为了方便在代码中切换...
4. **事务管理**:在Spring的事务配置中,确保事务管理器能够识别并处理多数据源的事务,这通常需要设置AbstractRoutingDataSource作为事务管理器的数据源。 5. **业务逻辑代码**:在业务逻辑代码中,通过某种方式...
关于WebLogic服务器的JTA事务管理配置,WebLogic提供了一种基于JTA的全局事务支持,适用于多数据源和分布式事务场景。以下是配置步骤: 1. **配置数据源**:在WebLogic管理控制台中,创建JTA数据源,设置JNDI名称,...
在Hibernate中,JTA事务应用总结通常会讲解如何配置Hibernate以使用JTA,以及在多数据源环境下如何处理事务。 跨库事务处理,如在spring+hibernate+struts2+jta的项目中,需要考虑的细节更多,包括异常处理、回滚...
2. 配置SqlMapConfig.xml:这是Ibatis的核心配置文件,用于定义数据源、事务管理器、SqlMap等。 3. 编写Mapper XML文件:在XML文件中编写SQL语句和结果映射。 4. 创建Mapper接口:在Java代码中创建与XML文件对应的...
- **ibatis配置**:通过`SqlMapConfig.xml`配置文件设置数据源、事务管理器等全局配置。 - **SqlMapClient基本操作示例**:包括增删改查等基本CRUD操作。 #### 四、ibatis高级特性 - **数据关联**:描述了一对多和...
- **基于JTA的事务管理机制**:适用于分布式事务场景,支持多个数据源的事务协调。 - **外部事务管理**:当应用服务器或其他容器已经提供了事务管理服务时,ibatis可以与之集成,无需自己管理事务。 #### 四、...
- **配置文件**:创建ibatis的配置文件(如SqlMapConfig.xml),配置数据源信息、事务管理器等。 3. **ibatis配置** - **数据源配置**:设置JDBC数据源,包括数据库连接信息(URL、用户名、密码等)。 - **映射...
iBatis允许开发者配置多个数据源,这在处理分布式数据库或读写分离的场景中非常有用。通过配置数据源,iBatis可以在运行时选择合适的数据库进行操作。 8. 性能优化: iBatis的性能优化主要体现在减少不必要的对象...