atomikos分布式事务基本配置

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xsi:schemaLocation="
    http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
    http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
    http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">

    <!-- 自动扫描 -->
    <context:component-scan base-package="com.jxgyl.dubbo.hessian" />

    <!-- 引入配置文件 -->
    <bean id="propertyConfigurer"
        class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="location" value="classpath:configuration.properties" />
    </bean>

    <!-- DAO接口所在包名,Spring会自动查找其下的类 -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.jxgyl.dubbo.hessian.dao" />
        <property name="sqlSessionFactoryBeanName" value="test1SqlSessionFactory"></property>
    </bean>
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.jxgyl.dubbo.hessian.dao2" />
        <property name="sqlSessionFactoryBeanName" value="test2SqlSessionFactory"></property>
    </bean>

    <tx:annotation-driven/>

    <bean id="test1DataSource" class="com.atomikos.jdbc.AtomikosDataSourceBean" init-method="init" destroy-method="close">
        <property name="uniqueResourceName" value="test1"/>
        <property name="xaDataSourceClassName" value="com.alibaba.druid.pool.xa.DruidXADataSource"/>
        <property name="xaProperties">
            <props>
                <prop key="url">${jdbc.url}</prop>
                <prop key="username">${jdbc.username}</prop>
                <prop key="password">${jdbc.password}</prop>
            </props>
        </property>
        <!-- <property name="minPoolSize" value="10" />
        <property name="maxPoolSize" value="100" />
        <property name="borrowConnectionTimeout" value="30" />
        <property name="testQuery" value="select 1" />
        <property name="maintenanceInterval" value="60" /> -->
    </bean>
    <bean id="test2DataSource" class="com.atomikos.jdbc.AtomikosDataSourceBean" init-method="init" destroy-method="close">
        <property name="uniqueResourceName" value="test2"/>
        <property name="xaDataSourceClassName" value="com.alibaba.druid.pool.xa.DruidXADataSource"/>
        <property name="xaProperties">
            <props>
                <prop key="url">${jdbc.url2}</prop>
                <prop key="username">${jdbc.username2}</prop>
                <prop key="password">${jdbc.password2}</prop>
            </props>
        </property>
        <!-- <property name="minPoolSize" value="10" />
        <property name="maxPoolSize" value="100" />
        <property name="borrowConnectionTimeout" value="30" />
        <property name="testQuery" value="select 1" />
        <property name="maintenanceInterval" value="60" /> -->
    </bean>

    <bean id="test1SqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="test1DataSource" />
        <property name="mapperLocations" value="classpath:com/jxgyl/dubbo/hessian/mapping/*.xml" />
    </bean>
    <bean id="test2SqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="test2DataSource" />
        <property name="mapperLocations" value="classpath:com/jxgyl/dubbo/hessian/mapping/*.xml" />
    </bean>

     <bean id="atomikosTransactionManager" class="com.atomikos.icatch.jta.UserTransactionManager" init-method="init" destroy-method="close">
        <property name="forceShutdown" value="true"/>
    </bean>

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

    <bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager">
        <property name="transactionManager" ref="atomikosTransactionManager"/>
        <property name="userTransaction" ref="atomikosUserTransaction"/>
        <property name="allowCustomIsolationLevels" value="true"/>
    </bean>

</beans>
时间: 2024-12-25 13:12:02

atomikos分布式事务基本配置的相关文章

atomikos分布式事务的几个坑

atomikos几个坑:1.jta.properties:com.atomikos.icatch.output_dir=/datayes/atomikoscom.atomikos.icatch.log_base_dir=/datayes/atomikos若一个tomcat上有两个atomikos应用,则两个应用不要公用同一位置 2.datasource的用户名密码url不对,应用启动会失败,而且什么错误日志也没有,日志打到中间就没有新的日志输出了. 3.MySQL XA bugSome user

使用Atomikos实现JTA分布式事务

使用Atomikos实现JTA分布式事务 在这篇文章中: 1.1 JTA事务模型 2 JTA规范接口 3 Atomikos分布式事务 本文全面的介绍了JTA分布式事务模型和接口规范,以及开源的分布式事务解决方案Atomikos.笔者认同"talk is cheap,show me the code",因此在文章最后,给出一个完整的Atomikos与spring.mybatis整合的完整案例. 1 JTA规范 Java事务API(JTA:Java Transaction API)和它的同

WCF分布式事务(EF)

在说分布式事务之前,首先了解一下什么是事务. 事务有四个特性:ACID A是Atomicity,原子性.一个事务往往涉及到许多的子操作,原子性则保证这些子操作要么都做,要么都不做,而不至于出现事务的部分操作成功,而另外一部分操作没有成功.如果事务在执行的过程中发生错误,那么数据库将回滚到事务发生之前的状态.比如银行的转账服务,这个事务的最终结果一定是:某个账户的余额增加了x,而另外一个账户的余额减少了x,或者两个账户的余额未发生变化.而不会出现其他情况. C是Consistency,一致性.一致

JTA集成JOTM或Atomikos配置分布式事务(Tomcat应用服务器)

一.以下介绍Spring中直接集成JOTM提供JTA事务管理.将JOTM集成到Tomcat中. (经过测试JOTM在批量持久化时有BUG需要修改源码GenericPool类解决)! 参考文章http://mavin.zhou.blog.163.com/blog/static/114522435200971822334475/ 通过集成JOTM,直接在Spring中使用JTA事务 JOTM(Java Open Transaction Manager)是ObjectWeb的一个开源JTA实现,它本身

Spring3.x中的分布式事务配置

因为用Spring3.x已经有一段时间了,原来的事务配置基本上是基于同一数据源(可以用一个连接,在数据操作上指定多个数据库的操作,也能够进行回滚,事务的提交,基本上实现了分布式的事务处理),今天特地用atomikos进行了事务配置,进行了简单的测试,因为atomikos这个配置数据源时,自带了连接池,对于连接池的性能没有进行专门的测试,把原来的c3p0的事务配置去掉了,这个有待明天进行一次测试. 所依赖Java开源包,用maven自动下载: 我的配置 <properties> <atom

Java事务处理全解析(八)——分布式事务入门例子(Spring+JTA+Atomikos+Hibernate+JMS)

在本系列先前的文章中,我们主要讲解了JDBC对本地事务的处理,本篇文章将讲到一个分布式事务的例子. 请通过以下方式下载github源代码: git clone https://github.com/davenkin/jta-atomikos-hibernate-activemq.git 本地事务和分布式事务的区别在于:本地事务只用于处理单一数据源事务(比如单个数据库),分布式事务可以处理多种异构的数据源,比如某个业务操作中同时包含了JDBC和JMS或者某个操作需要访问多个不同的数据库. Java

Java事务(八) - 分布式事务 - spring + JTA + atomikos

一. 前言: 上一篇博客中,我们使用jotm实现了分布式事务, 本篇将使用atomikos实现. 基本的代码都是一样的,就是配置略有不同. 二. 代码实现: 1. 代码结构图: 2. 配置文件:ApplicationContext.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans"

Spring多数据源分布式事务管理/springmvc+spring+atomikos[jta]+druid+mybatis

项目进行读写分离及分库分表,在一个业务中,在一个事务中处理时候将切换多个数据源,需要保证同一事务多个数据源数据的一致性.此处使用atomikos来实现:最后附源码: 1:spring3.0之后不再支持jtom[jta]了,第三方开源软件atomikos(http://www.atomikos.com/)来实现. 2:org.springframework.transaction.jta.JotmFactoryBean类,spring-tx-2.5.6.jar中有此类,spring-tx-3.0.

分布式事务JTA实现Atomikos与Spring集成实践

理解分布式事务JTA原理参见:http://www.ibm.com/developerworks/cn/java/j-lo-jta/ JTA实现产品介绍:http://blog.chinaunix.net/uid-122937-id-3793220.html Atomikos官网无法访问,不过Maven中央库中具atomikos包.Atomikos集成Spring,Hibernate,Mybatis网上文章比较多,本文是通过JavaSE的方式借用Spring配置来测试Atomikos对JTA的实