srping atomikos 的jta 事物管理

加入bean
<dependency>
  <groupId>com.atomikos</groupId>
  <artifactId>transactions-jta</artifactId>
  <version>4.0.0M4</version>
 </dependency>

<dependency>
  <groupId>org.aspectj</groupId>
  <artifactId>aspectjweaver</artifactId>
  <version>1.6.11</version>
</dependency>

spring bean配置

     <!-- atomikos事务管理器 -->  
    <bean id="atomikosTransactionManager" class="com.atomikos.icatch.jta.UserTransactionManager"  
        init-method="init" destroy-method="close">  
        <description>UserTransactionManager</description>  
        <property name="forceShutdown">  
            <value>true</value>  
        </property>  
    </bean>  
     <bean id="atomikosUserTransaction" class="com.atomikos.icatch.jta.UserTransactionImp">  
        <property name="transactionTimeout" value="300" />  
    </bean>
     <!-- spring 事务管理器 -->  
    <bean id="springTransactionManager"  
        class="org.springframework.transaction.jta.JtaTransactionManager">  
        <property name="transactionManager">  
            <ref bean="atomikosTransactionManager" />  
        </property>  
        <property name="userTransaction">  
            <ref bean="atomikosUserTransaction" />  
        </property>  
    </bean>
    
    <tx:advice id="txadvice" transaction-manager="springTransactionManager">     
        <tx:attributes>     
            <tx:method name="*" propagation="REQUIRED"></tx:method>
        </tx:attributes>     
    </tx:advice>      
          
    <aop:config proxy-target-class="true">     
        <aop:pointcut id="serviceMethods" expression="execution(* com.sevenishere.service.*Service.*(..))"/>     
        <aop:advisor advice-ref="txadvice" pointcut-ref="serviceMethods"/>     
    </aop:config>  
     
 
时间: 2024-10-04 21:08:35

srping atomikos 的jta 事物管理的相关文章

Atomikos实现分布式事物管理

分布式事务管理,简单来说就是多个数据库之间的事务管理.之前也试过使用Spring动态切换数据库,通过继承AbstractRoutingDataSource重写determineCurrentLookupKey()方法,来决定使用那个数据库.在开启事务之前,通过改变lookupKey来达到切换数据源目的.但是这种方法多个数据库之前没办法做事务管理,或许对于主从(读写)数据库会好用一些,而对于需要一个操作中更新多个数据库的情况,使用Atomikos或许会更好一些. 本文采用spring4+hiber

spring+springMVC+Mybatis架构下采用AbstractRoutingDataSource、atomikos、JTA实现多数据源灵活切换以及分布式事务管理

背景: 1.系统采用SSM架构.需要在10多个MYSQL数据库之间进行切换并对数据进行操作,上篇博文<springMVC+Mybatis(使用AbstractRoutingDataSource实现多数据源切换时)事务管理未生效的解决办法> 2.第一步先通过AbstractRoutingDataSource实现了多数据源的灵活切换,但是后来发现事务不起作用: 3.发现问题是因为重复扫描service包导致第二次扫入容器的BEAN没有纳入事务管理,因此在springMVC的配置文件中排除了对Ser

Spring-事物-不依赖应用服务器的开源JTA事物实现

不依赖应用服务器的开源JTA事物实现JOTM和Atomikos Transactions JOTM 即基于Java开放事务管理器(Java Open Transaction Manager),实现JTA规范,能够运行在非应用服务器环境中,Web容器或独立Java SE环境,官网地址: http://jotm.objectweb.org/. Atomikos Transactions Essentials 其为Atomikos开发的事务管理器,该产品属于开源产品,另外还一个商业的Extreme T

springboot(九):事物管理

SpringBoot整合事物管理 Springboot默认集成事物,只主要在方法上加上@Transactional即可. 多数据源情况下事物怎么管理事物 对于这种传统的分布式事物管理,采用jta+atomikos 分布式事物管理.Atomikos 是一个为Java平台提供增值服务的并且开源类事务管理器. 新增jta-atomikos依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifa

第十一章 SpringBoot事物管理器

一.springboot整合事物管理 springboot默认集成事物,只主要在方法上加上@Transactional即可 二.SpringBoot分布式事物管理 使用springboot+jta+atomikos 分布式事物管理 1.pom文件 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-parent</artifactId> <

spring 事物管理

1 在spring中支持编程式事物和声明式事务管理,通常使用声明式事物管理,声明式的事物管理是基于aop机制实现的使用很方便. 2 spring支持单一数据库资源的事物管理和跨越多个数据库资源的事物管理既JTA全局事物. 3 在spring中提供了多个事物管理类,常用的是;DataSourceTransactionManager,HibernateTransactionManager和JtaTransactionManager. DataSourceTransactionManager :数据源

spring事物管理

一)spring的事务管理     事务管理并非spring独有,用过JDBC hibernate的朋友都知道,这些api和框架都提供了自己的事务管理机制.那么spring的事务管理又有些什么与众不同支持呢?它的优点又有哪些呢?总结来说大概有以下这么几点: 1' 为不同的事务API提供一致的编程模型,如Java Transaction API (JTA).JDBC.Hibernate.JavaPersistenceAPI(JPA)以及JavaDataObjects(JDO) 2' 支持decla

Spring+iBatis+Atomikos实现JTA事务

Atomikos是一个公司名字,旗下最著名的莫过于其Atomikos的事务管理器产品. 产品分两个:一个是开源的TransactionEssentials,一个是商业的ExtremeTransactions. TransactionEssentials的主要特征: JTA/XA 事务管理 —— 提供事务管理和连接池 不需要应用服务器 —— TransactionEssentials可以在任何Java EE应用服务器中运行,也就是不依赖于任何应用服务器 开源 —— TransactionEssen

spring 事物管理特性

采用编程式事务1. getCurrentSession()与openSession()的区别? * 采用getCurrentSession()创建的session会绑定到当前线程中,而采用openSession()创建的session则不会 * 采用getCurrentSession()创建的session在commit或rollback时会自动关闭,而采用openSession创建的session必须手动关闭 2.使用getCurrentSession()需要在hibernate.cfg.xm