<bean id="dataSourceA" class="com.atomikos.jdbc.AtomikosDataSourceBean" init-method="init" destroy-method="close">
<property name="uniqueResourceName" value="mysql/merchant" />
<property name="xaDataSourceClassName" value="com.mysql.jdbc.jdbc2.optional.MysqlXADataSource" />
<property name="xaProperties">
<props>
<prop key="user">root</prop>
<prop key="password">wait4you</prop>
<prop key="url">jdbc:mysql://10.0.10.24:3306/merchant?useUnicode=true&characterEncoding=utf-8</prop>
</props>
</property>
<property name="poolSize" value="10"/>
<property name="testQuery" value="SELECT 1"/>
</bean>
<bean id="dataSourceB" class="com.atomikos.jdbc.AtomikosDataSourceBean" init-method="init" destroy-method="close">
<property name="uniqueResourceName" value="mysql/orders" />
<property name="xaDataSourceClassName" value="com.mysql.jdbc.jdbc2.optional.MysqlXADataSource" />
<property name="xaProperties">
<props>
<!--prop key="user">root</prop>
<prop key="password">wait4you</prop-->
<prop key="user">specl</prop>
<prop key="password">uBpEaNEI5</prop>
<prop key="url">jdbc:mysql://10.0.10.34:3306/orders?useUnicode=true&characterEncoding=utf-8</prop>
</props>
</property>
<property name="poolSize" value="10"/>
<property name="testQuery" value="SELECT 1"/>
</bean>
<bean id="dataSource" class="com.specl.api.sharding.DynamicDataSource">
<property name="targetDataSources">
<map key-type="java.lang.String">
<entry key="order_r_0" value-ref="dataSourceB" />
<entry key="order_rw_0" value-ref="dataSourceB" />
<entry key="merchant_r_0" value-ref="dataSourceA" />
<entry key="merchant_rw_0" value-ref="dataSourceA" />
</map>
</property>
<property name="defaultTargetDataSource" ref="dataSourceA"/>
</bean>
<bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="configLocation" value="classpath:sqlmap-config.xml" />
<property name="dataSource" ref="dataSource" />
</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="300" />
</bean>
<bean id="jtaTransactionManager" class="org.springframework.transaction.jta.JtaTransactionManager">
<property name="transactionManager">
<ref bean="atomikosTransactionManager" />
</property>
<property name="userTransaction">
<ref bean="atomikosUserTransaction" />
</property>
<qualifier value="jtaTx"></qualifier>
</bean>
<bean id="singleTransactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSourceA"/>
<qualifier value="singleTx"></qualifier>
</bean>
<bean id="boardDao" class="com.specl.api.dao.release.BoardDaoRelease">
<property name="sqlMapClient" ref="sqlMapClient"></property>
</bean>
分享到:
相关推荐
使用spring + atomikos+druid配置的分布式事务demo,两种数据源配置方式都可以,使用junit测试没问题,案例中使用的mysql数据库是8.0.11版本,版本不同请自行修改pom.xml和jdbc.properties
AtomikosDataSource是基于Atomikos实现的XAPool,可以协调跨多个数据源的ACID(原子性、一致性、隔离性和持久性)事务。在Spring中集成Atomikos,可以实现全局的分布式事务管理,确保在分布式环境下的数据一致性。 ...
2. `applicationContext.xml`或对应的Java配置类:配置Spring的事务管理器和数据源,以及Atomikos相关的bean。 3. MyBatis的配置:定义SqlSessionFactory,并与Spring集成。 4. 示例代码:展示了如何在方法上使用`@...
2. 在Spring配置文件中,配置JtaTransactionManager,指定Atomikos的相关属性,如事务日志的位置等。 3. 对于需要参与事务的数据库或者其他资源,需要设置它们为XAResource,并在Atomikos中注册。 4. 使用Spring的@...
在Spring中,我们可以通过配置Atomikos事务管理器,使得Spring可以在跨数据库操作时启动和管理全局事务。 Druid是一个强大的数据库连接池,它不仅提供了高效的连接管理和性能监控,还支持分布式事务。在Spring和...
在分布式系统中,确保事务的...配置包括设置Atomikos事务管理器、数据源以及事务属性,然后在业务逻辑中利用Spring的`@Transactional`注解来管理事务边界。这使得开发者能够在复杂分布式环境中实现高一致性的业务逻辑。
本教程将探讨如何利用Spring Boot、Druid、Mybatis以及Atomikos来配置多数据源并实现分布式事务。 首先,Spring Boot是Java生态系统中的一个流行框架,它简化了设置和配置过程,使得开发人员可以快速启动新项目。在...
2. 集成Atomikos:在Spring配置中引入Atomikos的事务管理器,配置全局事务超时、事务日志路径等参数,确保Atomikos可以在多数据源环境下正确处理分布式事务。 3. 配置MyBatis:将MyBatis的SqlSessionFactory与...
在实际项目中,"jpatest"可能是一个包含测试代码的目录或者模块,用于验证多数据源配置和Atomikos事务管理是否正常工作。测试通常会涉及到插入、查询、更新和删除操作,以确保在不同数据源之间的事务处理正确无误。 ...
3. 配置Spring:在Spring的配置文件中启用事务管理,并配置Atomikos事务协调器,指定Atomikos的配置文件位置。 4. 配置数据源:为每个参与分布式事务的数据源创建AtomikosManagedDataSource实例,并在Spring配置中...
在Spring中配置Atomikos,你需要在Spring的配置文件中引入Atomikos的事务管理器,并设置相关的事务属性。同时,你需要在MyBatis的配置中启用JTA事务管理,确保Spring和Atomikos能够协同工作。这样,当你的应用执行跨...
Spring Boot:mybatis-plus + atomikos + druid 实现不同实例数据库的多数据源配置和分布式事务管理(demo项目),想到工作上可能会用到多数据源,但是自己在这方面并不是很熟悉,于是在网上查阅了很多文章,结果...
3. **配置Atomikos事务管理器** - 配置Atomikos的系统属性,如`com.atomikos.icatch.log_base_dir`指定日志目录,`com.atomikos.icatch.max_timeout`设置最大超时时间等。 - 在Spring配置文件中,定义一个...
本项目“springboot+jta+atomikos”旨在利用Spring Boot框架、Java Transaction API (JTA) 和 Atomikos 这一开源事务管理器来实现分布式事务的统一管理。下面将详细阐述这三个关键组件以及它们如何协同工作。 **...
在Spring Boot的配置文件(application.properties或yaml)中,设置Atomikos的属性,如事务超时时间、回滚策略等。同时,需要创建一个`UserTransaction`的@Bean,这样Spring就能识别并使用Atomikos进行事务管理。 3...
3. 集成Spring:在Spring配置文件中,指定Atomikos事务管理器,并启用JTA支持。 4. 配置MyBatis:设置SqlSessionFactory,并确保其使用Atomikos提供的数据源。 5. 开启事务支持:在需要执行分布式事务的Service类中...
在这个案例中,我们将深入探讨如何使用Spring 4与Atomikos来实现跨数据库的分布式事务管理。 Atomikos是一款开源的事务处理监控器(Transaction Processing Monitor,TPM),它支持JTA(Java Transaction API)标准...
综上所述,Spring、MyBatis和Atomikos的集成主要涉及JTA标准的运用、Atomikos的配置以及Spring的事务管理。通过这种方式,可以实现在分布式环境下的事务一致性,确保多数据源操作的正确性。在实际开发中,根据具体的...
NULL 博文链接:https://lizhao6210-126-com.iteye.com/blog/1958831
Spring、Hibernate和Atomikos的组合就是一种强大的解决方案,它们可以协同工作以支持多数据源的分布式事务处理。接下来,我们将深入探讨这些技术以及如何配置它们来实现多数据源。 1. **Spring**: Spring是一个...