`
taelons
  • 浏览: 10528 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

使用spring+atomikos+ibatis实现声明式DB2多数据库全局分布式事务

阅读更多
使用spring+atomikos+ibatis实现声明式DB2多数据库全局分布式事务,关键是DB2数据库驱动程序和数据库访问参数的配置。db2的jdbc driver有好几种,不同的driver,参数的写法也不同,甚至端口也不一样,而且本人使用的DB2 V8.2驱动程序db2jcc.jar有bug,必须使用fp12版本的db2jcc.jar代替,才能实现全局分布式事务
atomikos官网上没有提供DB2的配置示例,试了多次,以下配置终于搞定了全局分布式事务,见其中的注释

<tx:advice id="txAdvice" transaction-manager="txManager">
		<tx:attributes>
			<tx:method name="get*" read-only="true" />
			<tx:method name="*" rollback-for="Throwable"/>
		</tx:attributes>
	</tx:advice>
	
	<!-- 在类foo.bar.MyClass的myMethod()方法里实现全局分布式事务,该方法对两个数据源进行操作 -->
	<aop:config>
		<aop:pointcut id="myOperation"
			expression="execution(*foo.bar.MyClass.myMethod(..))" />
		<aop:advisor advice-ref="txAdvice"
			pointcut-ref="myOperation" />
	</aop:config>
	
	<!-- 数据源1 -->
	<bean id="dataSource"
		class="com.atomikos.jdbc.AtomikosDataSourceBean">
		<property name="uniqueResourceName">
			<value>app/main</value>
		</property>
		<property name="xaDataSourceClassName">
			<value>[b]com.ibm.db2.jcc.DB2XADataSource[/b]</value>
		</property>

		<property name="xaProperties">
			<props>
				[b]<prop key="serverName">172.160.1.138</prop>
				<prop key="portNumber">50000</prop>
				<prop key="databaseName">MYDB</prop>
				<prop key="user">db2admin</prop>
				<prop key="password">pass</prop>
				<prop key="driverType">4</prop>[/b]
			</props>
		</property>
		<property name="poolSize">
			<value>5</value>
		</property>
	</bean>
	
	<!-- 数据源2 -->
	<bean id="dataSourceHis"
		class="com.atomikos.jdbc.AtomikosDataSourceBean">
		<property name="uniqueResourceName">
			<value>app/history</value>
		</property>
		<property name="xaDataSourceClassName">
			<value>com.ibm.db2.jcc.DB2XADataSource</value>
		</property>

		<property name="xaProperties">
			<props>
				<prop key="serverName">172.160.1.139</prop>
				<prop key="portNumber">50000</prop>
				<prop key="databaseName">NDB</prop>
				<prop key="user">db2admin</prop>
				<prop key="password">pass</prop>
				<prop key="driverType">4</prop>
			</props>
		</property>
		<property name="poolSize">
			<value>5</value>
		</property>
	</bean>
	
	<!-- 数据源1的iBatis sqlMapClient -->
	<bean id="sqlMapClient1"
		class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
		<property name="configLocation">
			<value>SqlMapConfig.xml</value>
		</property>
		<property name="dataSource">
			<ref bean="dataSource" />
		</property>
	</bean>

	<!-- 数据源2的iBatis sqlMapClient -->
	<bean id="sqlMapClient2"
		class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
		<property name="configLocation">
			<value>SqlMapConfig.xml</value>
		</property>
		<property name="dataSource">
			<ref bean="dataSourceHis" />
		</property>
	</bean>
	
	<bean id="atomikosTransactionManager"
		class="com.atomikos.icatch.jta.UserTransactionManager"
		init-method="init" destroy-method="close">
		<property name="forceShutdown">
			<value>true</value>
		</property>
	</bean>

	<bean id="atomikosUserTransaction"
		class="com.atomikos.icatch.jta.UserTransactionImp">
		<property name="transactionTimeout" value="240" />
	</bean>

	<bean id="txManager"
		class="org.springframework.transaction.jta.JtaTransactionManager">
		<property name="transactionManager">
			<ref bean="atomikosTransactionManager" />
		</property>
		<property name="userTransaction">
			<ref bean="atomikosUserTransaction" />
		</property>
	</bean>
	<-- 访问数据源1的dao -->
	<bean id="dao1" class="foo.bar.dao.My1DAOImpl">
		<property name="sqlMapClient">
			<ref bean="sqlMapClient" />
		</property>
	</bean>
	<-- 访问数据源2的dao -->
	<bean id="dao2" class="foo.bar.dao.My2DAOImpl">
		<property name="sqlMapClient">
			<ref bean="sqlMapClientHis" />
		</property>
	</bean>


iBatis的配置没有特殊的地方,使用abator for iBatis自动生成,abatorConfig.xml里daoGenerator的type属性设置为'SPRING'
分享到:
评论
2 楼 xhaopuj 2009-06-01  
你好,请问,能上传你的fp12版本的db2jcc.jar,  这个jar实在不好找.先谢了.
1 楼 sun128837 2009-02-24  
spring+atomikos?您有结合hibernate配置过吗
我使用的环境是hibernate5、tomcat6、mydql5.0 inneDB
但是配置好久都是抱错
null source
以前相关帖子都结贴了,哪位有经验请教一下,谢谢

相关推荐

    spring+druid+AtomikosDataSource实现多数据源切换及分布式事务控制

    在Spring中集成Atomikos,可以实现全局的分布式事务管理,确保在分布式环境下的数据一致性。 4. **配置多数据源** 在Spring的XML配置文件中,我们需要为每个数据源创建一个`AtomikosDataSourceBean`实例,并配置...

    Spring+MyBatis+Atomikos实现JTA分布式事务

    本文将深入探讨如何使用Spring、MyBatis和Atomikos实现JTA分布式事务。 首先,让我们理解JTA的概念。Java Transaction API(JTA)是Java EE规范之一,用于处理分布式环境中的事务。它允许应用程序在不同的资源管理...

    使用Spring+atomikos实现分布式事务

    本教程将探讨如何结合Spring和Atomikos来实现分布式事务。 首先,我们需要理解什么是分布式事务。在分布式环境中,事务跨越多个资源管理器,如数据库或消息队列。为了确保ACID(原子性、一致性、隔离性和持久性)...

    spring+atomikos+druid分布式事务

    使用spring + atomikos+druid配置的分布式事务demo,两种数据源配置方式都可以,使用junit测试没问题,案例中使用的mysql数据库是8.0.11版本,版本不同请自行修改pom.xml和jdbc.properties

    spring + JTA + atomikos 实现分布式事务

    本文将深入探讨如何使用Spring、JTA和Atomikos来实现分布式事务。 首先,了解JTA的基本概念。JTA定义了一套规范,允许在多资源环境下进行事务管理,比如跨越多个数据库或者消息队列的服务。它包括三个主要组件:...

    spring+atomikos+druid分布式事务Demo

    本示例"spring+atomikos+druid分布式事务Demo"聚焦于如何在Spring框架中利用Atomikos和Druid来处理分布式事务。接下来,我们将深入探讨这三个组件以及它们在实现分布式事务中的作用。 Spring是一个广泛使用的Java...

    Spring Boot + Druid + Mybatis + Atomikos 配置多数据源 并支持分布式事务

    本教程将探讨如何利用Spring Boot、Druid、Mybatis以及Atomikos来配置多数据源并实现分布式事务。 首先,Spring Boot是Java生态系统中的一个流行框架,它简化了设置和配置过程,使得开发人员可以快速启动新项目。在...

    基于Spring4.1.7+atomikos+mybaits 实现两阶段的分布式事务处理

    在Spring 4.1.7版本中,我们可以利用其声明式事务管理来简化分布式事务的实现。通过配置@Transactional注解,可以在方法级别声明事务边界,Spring会自动管理事务的开始、提交或回滚。 Atomikos是一款开源的事务管理...

    java+spring+mybatis+mysql+RuoYi-atomikos-实现分布式事务.zip

    本项目"java+spring+mybatis+mysql+RuoYi-atomikos-实现分布式事务.zip"是一个基于若依(RuoYi)框架改造的多模块分布式事务解决方案,它利用了Atomikos这一强大的分布式事务管理器。以下将详细解析这个项目的知识点...

    Spring+SpringMVC+MyBatis+Atomikos整合

    2. 集成Atomikos:在Spring配置中引入Atomikos的事务管理器,配置全局事务超时、事务日志路径等参数,确保Atomikos可以在多数据源环境下正确处理分布式事务。 3. 配置MyBatis:将MyBatis的SqlSessionFactory与...

    Spring4.1.7+atomikos+mybaits 实现两阶段的分布式事务处理

    将基于Spring4.1.7+atomikos+mybaits 实现两阶段的分布式事务处理,通过AOP面向切面实现动态实现数据源的切换 http://www.dczou.com/viemall/407.html

    spring+jpa+atomikos多数据源

    总结来说,"spring+jpa+atomikos多数据源"组合提供了强大的多数据库支持,使得应用程序能够在多个数据库间无缝切换和处理事务,这对于大型分布式系统来说至关重要。理解并掌握这些技术,对于提升软件开发的灵活性和...

    Spring3.0+Hibernate+Atomikos多数据源分布式事务管理

    本教程将聚焦于如何利用Spring 3.0、Hibernate ORM框架以及Atomikos这个开源事务管理器来实现高效、可靠的多数据源分布式事务处理。 **Spring 3.0**: Spring是Java开发中最广泛使用的轻量级框架之一,它提供了一个...

    SpringBoot+mybatisPlus+atomikos+druid.zip

    Spring Boot:mybatis-plus + atomikos + druid 实现不同实例数据库的多数据源配置和分布式事务管理(demo项目),想到工作上可能会用到多数据源,但是自己在这方面并不是很熟悉,于是在网上查阅了很多文章,结果...

    spring4+atomikos实现分布式事务

    在这个案例中,我们将深入探讨如何使用Spring 4与Atomikos来实现跨数据库的分布式事务管理。 Atomikos是一款开源的事务处理监控器(Transaction Processing Monitor,TPM),它支持JTA(Java Transaction API)标准...

    springboot+jta+atomikos

    本项目“springboot+jta+atomikos”旨在利用Spring Boot框架、Java Transaction API (JTA) 和 Atomikos 这一开源事务管理器来实现分布式事务的统一管理。下面将详细阐述这三个关键组件以及它们如何协同工作。 **...

    Spring boot+Atomikos+JTA+Hibernate+mybatis+MySQL实现分布式事务+多数据源

    本案例主要探讨如何利用Spring Boot、Atomikos、JTA(Java Transaction API)、Hibernate以及MyBatis,结合MySQL数据库,实现一个跨数据源的分布式事务解决方案。 首先,Spring Boot是一个基于Spring框架的快速开发...

    Springboot+Atomikos+Jpa+Mysql实现JTA分布式事务

    本文将详细讲解如何利用Spring Boot、Atomikos、JPA(Java Persistence API)以及MySQL来实现JTA(Java Transaction API)分布式事务。 首先,Spring Boot是一个轻量级的框架,它简化了基于Spring的应用程序开发...

    SpringBoot+Mybatis+Atomikos+Mysql+Oracle 多数据源分布式事物后台搭建

    SpringBoot+Mybatis+Atomikos+Mysql+Oracle 多数据源分布式事物后台搭建 完整demo包,直接下下来解压,数据库配成自己的库,表自己的表,修改下脚本直接跑,网上大把资料,没一个能直接用的,这里花了点时间稍做...

    Spring boot+Atomikos+JTA+Hibernate+MySQL实现分布式事务+多数据源(可运行)

    本项目使用Spring Boot、Atomikos、JTA(Java Transaction API)、Hibernate和MySQL来实现分布式事务处理和多数据源管理,以确保在多个数据库操作之间保持事务的ACID特性。 首先,Spring Boot作为微服务开发的主流...

Global site tag (gtag.js) - Google Analytics