`

使用Atomikos Transactions Essentials实现多数据源JTA分布式事务

阅读更多
  1. <!--第一个数据库-->
  2. < bean id = "dataSource" class = "com.atomikos.jdbc.SimpleDataSourceBean" init-method = "init" destroy-method = "close" >
  3. < property name = "uniqueResourceName" >
  4. < value > mysql/main </ value >
  5. </ property >
  6. < property name = "xaDataSourceClassName" >
  7. <!--使用MysqlXADataSource(mysql>=5.0,Connector/J>=5.0才可以支持XADatasource)-->
  8. < value > com.mysql.jdbc.jdbc2.optional.MysqlXADataSource </ value >
  9. </ property >
  10. < property name = "xaDataSourceProperties" >
  11. < value > URL =${jdbc.url}; user =${jdbc.username}; password =${jdbc.password} </ value >
  12. </ property >
  13. < property name = "exclusiveConnectionMode" >
  14. < value > true </ value >
  15. </ property >
  16. < property name = "connectionPoolSize" >
  17. < value > 3 </ value >
  18. </ property >
  19. < property name = "validatingQuery" >
  20. < value > SELECT1 </ value >
  21. </ property >
  22. </ bean >
  23. <!--第二个数据库-->
  24. < bean id = "dataSourceB" class = "com.atomikos.jdbc.SimpleDataSourceBean" init-method = "init" destroy-method = "close" >
  25. < property name = "uniqueResourceName" >
  26. < value > mysql/news </ value >
  27. </ property >
  28. < property name = "xaDataSourceClassName" >
  29. <!--使用MysqlXADataSource(mysql>=5.0,Connector/J>=5.0才可以支持XADatasource)-->
  30. < value > com.mysql.jdbc.jdbc2.optional.MysqlXADataSource </ value >
  31. </ property >
  32. < property name = "xaDataSourceProperties" >
  33. < value > URL =${jdbc.url.b}; user =${jdbc.username.b}; password =${jdbc.password.b} </ value >
  34. </ property >
  35. < property name = "exclusiveConnectionMode" >
  36. < value > true </ value >
  37. </ property >
  38. < property name = "connectionPoolSize" >
  39. < value > 3 </ value >
  40. </ property >
  41. < property name = "validatingQuery" >
  42. < value > SELECT1 </ value >
  43. </ property >
  44. </ bean >
  45. < bean id = "lobHandler" class = "org.springframework.jdbc.support.lob.DefaultLobHandler" />
  46. <!--第一个数据库的sqlMapClient-->
  47. < bean id = "sqlMapClient" class = "org.springframework.orm.ibatis.SqlMapClientFactoryBean" >
  48. < property name = "configLocation" >
  49. <!--包含第一个数据库表的map-->
  50. < value > classpath:/sqlmap-config.xml </ value >
  51. </ property >
  52. < property name = "dataSource" ref = "dataSource" />
  53. < property name = "lobHandler" ref = "lobHandler" />
  54. </ bean >
  55. <!--第二个数据库的sqlMapClient-->
  56. < bean id = "sqlMapClientB" class = "org.springframework.orm.ibatis.SqlMapClientFactoryBean" >
  57. < property name = "configLocation" >
  58. <!--包含第一个数据库表的map-->
  59. < value > classpath:/sqlmap-configb.xml </ value >
  60. </ property >
  61. < property name = "dataSource" ref = "dataSourceB" />
  62. < property name = "lobHandler" ref = "lobHandler" />
  63. </ bean >
  64. <!--ConstructAtomikosUserTransactionManager,neededtoconfigureSpring-->
  65. < bean id = "atomikosTransactionManager" class = "com.atomikos.icatch.jta.UserTransactionManager" init-method = "init"
  66. destroy-method = "close" >
  67. <!--whencloseiscalled,shouldweforcetransactionstoterminateornot?-->
  68. < property name = "forceShutdown" >
  69. < value > true </ value >
  70. </ property >
  71. </ bean >
  72. <!--AlsouseAtomikosUserTransactionImp,neededtoconfigureSpring-->
  73. < bean id = "atomikosUserTransaction" class = "com.atomikos.icatch.jta.UserTransactionImp" >
  74. < property name = "transactionTimeout" value = "240" />
  75. </ bean >
  76. <!--ConfiguretheSpringframeworktouseJTAtransactionsfromAtomikos-->
  77. < bean id = "transactionManager" class = "org.springframework.transaction.jta.JtaTransactionManager" >
  78. < property name = "transactionManager" >
  79. < ref bean = "atomikosTransactionManager" />
  80. </ property >
  81. < property name = "userTransaction" >
  82. < ref bean = "atomikosUserTransaction" />
  83. </ property >
  84. </ bean >



事务的配置, 使用了spring2.0的语法,所以将namesapce也帖出来了.

xml 代码
  1. <? xml version = "1.0" encoding = "UTF-8" ?>
  2. < beans xmlns = "http://www.springframework.org/schema/beans"
  3. xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns:aop = "http://www.springframework.org/schema/aop"
  5. xmlns:tx = "http://www.springframework.org/schema/tx"
  6. xsi:schemaLocation ="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-2.0.xsd
  7. http://www.springframework.org/schema/aophttp://www.springframework.org/schema/aop/spring-aop-2.0.xsd
  8. http://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx-2.0.xsd"
  9. default-autowire = "byName" default-lazy-init = "true" >
  10. <!--支持@AspectJ标记-->
  11. < aop:aspectj-autoproxy />
  12. < aop:config proxy-target-class = "true" >
  13. < aop:advisor pointcut = "execution(**Facade.*(..))" advice-ref = "txAdvice" />
  14. < aop:advisor pointcut = "execution(**Manager.*(..))" advice-ref = "txAdvice" />
  15. </ aop:config >
  16. < tx:advice id = "txAdvice" >
  17. < tx:attributes >
  18. < tx:method name = "get*" read-only = "true" />
  19. < tx:method name = "find*" read-only = "true" />
  20. < tx:method name = "has*" read-only = "true" />
  21. < tx:method name = "locate*" read-only = "true" />
  22. < tx:method name = "*" />
  23. </ tx:attributes >
  24. </ tx:advice >
  25. </ beans >
分享到:
评论

相关推荐

    Springboot 动态多数据源 jta分布式事务

    本资源针对的是Spring Boot动态多数据源和JTA(Java Transaction API)分布式事务的实现,对于初学者来说非常实用。下面我们将深入探讨这些知识点。 首先,让我们了解一下Spring Boot的多数据源。在许多业务场景下...

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

    Atomikos通过实现JTA规范,允许应用程序在不同的数据源之间进行跨系统事务处理。 JPA是Java平台上的标准ORM(Object-Relational Mapping)框架,用于管理和持久化Java对象到关系数据库。它提供了一种抽象层,使得...

    SpringBoot+Atomikos分布式事务及多数据源动态切换,两种demo

    本文将深入探讨如何在Spring Boot项目中实现Atomikos分布式事务以及动态数据源切换的两种示例。 首先,我们需要理解什么是分布式事务。在分布式系统中,事务需要跨越多个独立的数据库或服务进行操作。分布式事务的...

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

    使用Spring的`AbstractRoutingDataSource`,我们可以实现数据源的动态选择。这个抽象类会根据当前的业务上下文(例如,通过`ThreadLocal`变量)决定使用哪个数据源。这样,我们可以在运行时根据业务需求灵活地切换...

    springboot多数据源即分布式事务解决方案

    本文将详细探讨SpringBoot如何实现多数据源以及分布式事务。 首先,我们要理解什么是多数据源。多数据源意味着一个应用可以同时连接和操作多个数据库。在SpringBoot中,我们可以通过配置不同的DataSource Bean来...

    springboot多数据源即分布式事务解决方案,添加对多线程的支持

    通常,我们可以使用`JtaTransactionManager`配合Atomikos、Bitronix等JTA实现来处理分布式事务。以下是一个简单的示例: ```java @Configuration @EnableTransactionManagement public class TransactionConfig { ...

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

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

    Spring Boot+Druid+Mybatis实现JTA分布式事务

    JTA是Java平台企业版(Java EE)的一部分,它为应用提供了统一的事务管理接口,支持跨多个数据源的分布式事务。这意味着在一个事务中,可以同时对多个数据库或资源进行操作,确保数据的一致性和完整性。 Spring ...

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

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

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

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

    Spring+Mybatis+Atomikos实现JAVA初始化并控制多个数据源+分布式事务

    总的来说,这个DEMO旨在帮助开发者理解如何在Java应用中实现多数据源和分布式事务,涉及到的核心技术包括Spring的多数据源支持、Mybatis的持久层操作以及Atomikos的事务协调。通过实践这个DEMO,开发者可以深入掌握...

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

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

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

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

    SpringBoot+Atomikos+动态多数据源+事务+2种切换数据源的方式

    本主题将深入探讨如何利用SpringBoot结合Atomikos实现动态多数据源以及事务管理,并介绍两种切换数据源的方法。 首先,SpringBoot简化了传统Spring应用的初始化过程,它通过自动配置和starter包让开发者快速搭建...

    使用springboot+jta+atomikos配置多数据源事务

    本教程将详细介绍如何使用Spring Boot结合JTA(Java Transaction API)和Atomikos来配置多数据源事务。 首先,我们需要理解JTA的含义。JTA是Java平台的标准,用于管理跨多个数据源的分布式事务。它允许应用程序在一...

    springboot+mybatis+druid+atomikos 多数据源,分布式事务,集成websocket,redis,swagger2

    在本项目中,我们主要探讨的是如何利用Spring Boot、MyBatis、Druid、Atomikos、WebSocket、Redis以及Swagger2构建一个具有多数据源、分布式事务管理,并且集成了实时通信与API文档管理功能的高级应用。下面将对这些...

    Atomikos Transactions Guide

    - 本指南旨在帮助用户了解JTA(Java Transaction API),掌握Atomikos Transactions Essentials的安装和配置,以及如何在应用程序中实现事务支持。 2. **事务基础知识**: - 事务是指一系列的操作,这些操作要么...

    第二部分spring+hibernate+jta 分布式事务Demo

    Atomikos提供的实现使得JTA能够在不同的数据源和持久化层之间进行协调,确保ACID(原子性、一致性、隔离性和持久性)属性。 4. **源码分析**: 深入理解这个Demo,我们可以查看Atomikos的源码,了解其如何处理事务...

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

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

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

    总结,结合Spring和Atomikos可以有效地处理分布式事务,确保跨多个数据源的操作在事务性语义下执行。配置包括设置Atomikos事务管理器、数据源以及事务属性,然后在业务逻辑中利用Spring的`@Transactional`注解来管理...

Global site tag (gtag.js) - Google Analytics