`
kobe学java
  • 浏览: 258560 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

在Spring中使用JTA事务管理(二)

 
阅读更多

 

在Spring中使用JTA事务管理(二)

 (2010-02-03 09:31:00)
标签: 

spring

 

jta

 

事务管理

 

it

分类: 架构与开发
 4. 在Spring配置文件中配置JOTM
    代码清单 1 applicationContext-jta.xml
    … 

<bean id="jotm"class="org.springframework.transaction.jta.JotmFactoryBean" />①JOTM本地实例  ②JTA事务管理器 <bean id="txManager"class="org.springframework.transaction.jta.JtaTransactionManager"><property name="userTransaction" ref="jotm" /> -1:指定userTransaction属性 </bean>③XAPool配置,内部包含了一个XA数据源,对应topicdb数据库 <bean id="topicDS"class="org.enhydra.jdbc.pool.StandardXAPoolDataSource"destroy-method="shutdown"><property name="dataSource">-1:内部XA数据源 <bean class="org.enhydra.jdbc.standard.StandardXADataSource"destroy-method="shutdown"><property name="transactionManager"ref="jotm" /><property name="driverName"value="com.MySQL.jdbc.Driver" /><property name="url"value="jdbc:MySQL://localhost:3309/topicdb" /></bean></property><property name="user" value="root" /><property name="password"value="1234" /></bean>④按照③相似的方式配置另一个XAPool,对应postdb数据库, <bean id="postDS"class="org.enhydra.jdbc.pool.StandardXAPoolDataSource"destroy-method="shutdown"><property name="dataSource"><beanclass="org.enhydra.jdbc.standard.StandardXADataSource"destroy-method="shutdown"><property name="transactionManager"ref="jotm" /><property name="driverName"value="com.mysql.jdbc.Driver" /><property name="url"value="jdbc:mysql://localhost:3309/postdb" /></bean></property><property name="user" value="root" /><property name="password"value="1234" /></bean>⑤配置访问topicDB数据源的Spring JDBC模板 <bean id="topicTemplate"class="org.springframework.jdbc.core.JdbcTemplate"><property name="dataSource" ref="topicDS" /></bean>⑥配置访问postDB数据源的Spring JDBC模板 <bean id="postTemplate"class="org.springframework.jdbc.core.JdbcTemplate"><property name="dataSource" ref="postDS" /></bean>⑦基于topicTemplate数据源的topicDao <bean id="topicDao"class="com.baobaotao.dao.jdbc.TopicJdbcDao"><property name="jdbcTemplate" ref="topicTemplate" /></bean>⑧基于postTemplate数据源的postDao <bean id="postDao"class="com.baobaotao.dao.jdbc.PostJdbcDao"><property name="jdbcTemplate" ref="postTemplate" /></bean>⑨进行跨数据库JTA事务的业务类 <bean id="bbtForum"class="com.baobaotao.service.impl.BbtForumImpl"><property name="topicDao" ref="topicDao" /><property name="postDao"ref="postDao" /></bean>⑩对BbtForumImpl业务类中的@Transaction注解进行驱动 <tx:annotation-driven transaction-manager="txManager" />

    首先,我们在①处通过Spring所提供的JotmFactoryBean创建一个本地JOTM实例,该实例同时实现了  javax.transaction.UserTransaction和javax.transaction.TransactionManager接口,它可以和ObjectWeb的XAPool一起工作。
JTA事务管理器通过userTransaction属性引用本地JOTM实例,Spring的JtaTransactionManager会自动探测到传入的javax.transaction.UserTransaction引用也实现了javax.transaction.TransactionManager,所以我们无需再配置JtaTransactionManager的transactionManager属性,如②所示。
     在Spring中配置JOTM的另一个关键问题是配置XAPool,支持JTA事务的数据源必须封装成XAPool。首先,我们通过org.enhydra.jdbc.standard.StandardXADataSource 配置一个XA数据源,它指向topicdb数据库,如③-1所示。而后,通过org.enhydra.jdbc.pool.StandardXAPoolDataSource将其封装成一个XAPool,如③所示。按照相同的方式,配置指向postdb数据库的XAPool,如④所示。
     接下来的配置就顺理成章了,分别使用Spring JDBC的模板类配置DAO类,然后再配置引用DAO类的业务类。关于Spring JDBC的详细内容,参见第10章的内容。
     这里,我们使用@Transaction注解对业务类BbtForumImpl进行事务声明,所以通过<tx:annotation-driven/>对此进行驱动,BbtForumImpl的代码如下所示:
代码清单 2 BbtForumImpl

package com.baobaotao.service.impl; import org.springframework.transaction.annotation.Transactional; import com.baobaotao.dao.PostDao; import com.baobaotao.dao.TopicDao; import com.baobaotao.domain.Forum; import com.baobaotao.domain.Topic; import com.baobaotao.service.BbtForum; @Transactional ①事务注解,以便Spring动态织入事务管理功能 public class BbtForumImpl implements BbtForum private TopicDao topicDao; private PostDao postDao; public voidaddTopic(Topic topic) throws Exception { ②将方法将被施加JTA事务的增强 topicDao.addTopic(topic); postDao.addPost(topic.getPost()); }}

    BbtForumImpl将Dao类组织起来,PostDao和TopicDao分别访问不同数据库中表,通过Spring注解驱动事务切面的增强后,它们将工作于同一个JTA事务中。

 

分享到:
评论

相关推荐

    在Spring中使用JTA事务管理

    本文将详细介绍如何在Spring中使用JTA事务管理,包括通过集成JOTM(Java Open Transaction Manager)以及引用Tomcat的JTA事务。 ### 1. 通过集成JOTM,直接在Spring中使用JTA事务 #### 1.1. 添加JOTM类库到类路径...

    Spring配置JTA事务管理

    本篇文章将深入探讨如何在Spring中配置JTA事务管理,以实现跨数据库和资源的事务一致性。 首先,让我们了解JTA的基本概念。JTA是一个规范,它定义了接口和API,使得应用程序可以控制跨越多个数据存储(如数据库、...

    springboot整合jta实现多数据源事务管理

    - 使用`@EnableJtaTransactionManagement`注解开启JTA事务管理。 5. **编写代码**: - 在需要进行多数据源事务操作的服务类上,使用`@Transactional`注解声明事务边界。 - 在事务方法内部,根据业务逻辑切换数据...

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

    Spring Boot支持JTA事务管理,主要通过以下组件实现: 1. Atomikos:这是一个开源的JTA实现,提供了一种在Spring Boot中实现分布式事务的方式。 2. Bitronix:另一种JTA实现,也可以与Spring Boot集成,处理分布式...

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

    对于分布式事务,Spring支持JTA事务管理,并且可以无缝集成JOTM。 1. **配置JOTM**:首先,你需要在项目的类路径下添加JOTM的依赖库。然后,在Spring的配置文件中定义JOTM的事务管理器 bean,例如: ```xml ...

    spring jta

    在Spring框架中,JTA事务管理主要用于处理分布式系统中的事务,确保数据的一致性和完整性。Spring提供了两种主要的方式来实现JTA事务管理:基于XML配置和基于注解的配置。通过这些方式,开发者可以声明式地控制事务...

    Spring+iBatis+JOTM实现JTA事务

    在Java开发中,事务管理是确保数据一致性与完整性...然而,需要注意的是,JTA事务管理相对于本地事务会有一定的性能开销,因此在不需要分布式事务的情况下,可以选择使用Spring的本地事务管理,以提高系统的运行效率。

    springboot整合JTA组件,多数据源事务管理

    下列任一个Java平台的组件都可以参与到一个JTA事务中 2、分布式事务 分布式事务(DistributedTransaction)包括事务管理器(TransactionManager)和一个或多个支持 XA 协议的资源管理器 ( Resource Manager )。 ...

    spring 结合druid和hibernate使用jta配置分布式事务

    7. **测试验证**:编写测试用例,检查在分布式事务中的正常操作和异常情况,确保事务管理的正确性。 以上就是Spring结合Druid和Hibernate,使用Atomikos实现JTA配置分布式事务的基本流程。在实际应用中,还需要考虑...

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

    我们可以使用`org.springframework.transaction.jta.JtaTransactionManager`来配置JTA事务管理器。通过Spring的`@Transactional`注解,可以在方法级别声明事务边界,使得事务管理更加简洁。 2. **Hibernate与JTA的...

    分布式事务操作之Spring+JTA+mybatis源码

    在分布式事务中,Spring 提供了声明式事务管理和编程式事务管理两种方式。 3. **JTA (Java Transaction API)**:JTA 是Java平台标准的一部分,定义了一套接口,用于管理跨多个数据存储系统的事务。通过JTA,应用...

    JTA事务源码示例

    Spring+iBatis+JOTM实现JTA事务: 如何处理跨库事物:spring + jtom 的jta事务是个很好的选择. 这个源码示例非常不错,包括所有的源码和jar包,下载后eclipse 或 myeclipse 导入就能用。 里面有详细的说明和注释,...

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

    Mybatis则是一个轻量级的持久层框架,它简化了SQL操作,但在JTA事务中,Mybatis需要配合Spring的TransactionManager来工作,使得每个数据库操作都在同一个事务上下文中。 实现步骤如下: 1. 添加依赖:在Spring ...

    spring+jotm+ibatis+mysql实现JTA分布式事务

    MySQL是广泛使用的开源关系型数据库管理系统,它支持事务处理,是分布式事务中的关键组件。在这个项目中,MySQL作为数据存储,与JOTM和Spring配合,共同确保分布式事务的正确执行。 项目文件“AjtaAbatisTest”可能...

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

    总之,Spring + JTA + Atomikos的组合提供了一种强大而灵活的方式,用于处理分布式环境中的事务管理。通过理解JTA的基本原理,掌握Spring的事务管理机制,以及熟悉Atomikos的使用,开发者可以构建出高可用、强一致性...

    Java分布式开发spring+jta+jotm

    在Spring应用中,你可以使用`@Transactional`注解来声明方法需要在一个事务中执行。Spring会自动管理和协调事务,无论操作涉及单个还是多个资源。例如,你可能有一个服务类,其中的方法需要同时更新数据库和消息队列...

    Jboss4.2.2+Spring2.5.6+hibernate+JTA事务的实现

    "Jboss4.2.2+Spring2.5.6+Hibernate+JTA事务的实现"就是一个典型的例子,它涉及到四个关键的技术栈,即JBoss Application Server 4.2.2、Spring 2.5.6、Hibernate ORM以及Java Transaction API(JTA)。这些技术的...

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

    4. 开启JTA支持:在Spring Boot的主类上添加`@EnableJtaTransactionManager`注解,开启JTA事务管理。 5. 编写业务代码:在服务类中,使用`@Transactional`注解标记方法,以开启分布式事务。事务边界内的所有操作将在...

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

    本文将深入探讨如何在Tomcat应用服务器上集成JTA,并使用JOTM(Java Open Transaction Manager)或Atomikos作为事务管理器来实现分布式事务。 首先,我们需要理解JTA的核心概念。JTA是Java EE平台的一部分,提供了...

Global site tag (gtag.js) - Google Analytics