`

Spring实现分布式事务处理(两阶段提交事务)

阅读更多

来自:http://www.iteye.com/topic/81912

 

需求背景: 
由于系统涉及到多个数据源,所以想用两阶段提交事务(分布式事务)来保证数据的一致性,完整性。 
测试环境: 
OS-->win2000 
DB-->sql server 2K 
j2ee容器和IDE-->WSAD 
开发框架:struts+spring+hibernate 
配置文件: 

Java代码 
  1. <bean id="dataSourcedgLabourDB" class="org.springframework.jndi.JndiObjectFactoryBean">  
  2.         <property name="jndiName" value="jdbc/dg_labour"/>  
  3.     </bean>  
  4.   
  5.    <bean id="sessionFactorydgLabourDB" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">  
  6.         <property name="dataSource" ref="dataSourcedgLabourDB"/>  
  7.         <property name="mappingDirectoryLocations">  
  8.             <list>  
  9.                 <value>classpath:/com/legend/shipment/domain/dgLabour</value>  
  10.             </list>  
  11.         </property>  
  12.         <property name="hibernateProperties">  
  13.             <props>  
  14.                 <prop key="hibernate.dialect">${hibernate.dialect}</prop>  
  15.                 <prop key="hibernate.show_sql">${hibernate.show_sql}</prop>  
  16.                 <prop key="hibernate.cache.use_query_cache">${hibernate.cache.use_query_cache}</prop>  
  17.                 <prop key="hibernate.cache.provider_class">${hibernate.cache.provider_class}</prop>  
  18.             </props>  
  19.         </property>  
  20.     </bean>  
  21.   
  22.     <bean id="wasTxMgr" class="org.springframework.transaction.jta.WebSphereTransactionManagerFactoryBean"/>  
  23.      
  24.    <bean id="transactionManagerdgLabourDB" class="org.springframework.transaction.jta.JtaTransactionManager">   
  25.         <property name="transactionManager">  
  26.             <ref local="wasTxMgr"/>  
  27.         </property>  
  28.    </bean>  
  29.   
  30.    <bean id="txProxyTemplatedgLabourDB" abstract="true"  
  31.         class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">  
  32.         <property name="transactionManager"><ref bean="transactionManagerdgLabourDB"/></property>  
  33.         <property name="transactionAttributes">  
  34.             <props>  
  35.                 <prop key="save*">PROPAGATION_REQUIRED</prop>  
  36.                 <prop key="remove*">PROPAGATION_REQUIRED</prop>  
  37.                 <prop key="del*">PROPAGATION_REQUIRED</prop>  
  38.                 <prop key="update*">PROPAGATION_REQUIRED</prop>  
  39.                 <prop key="*">PROPAGATION_REQUIRED,readOnly</prop>  
  40.             </props>  
  41.         </property>  
  42.     </bean>  



问题描叙: 
这几天我一直都在网上查找,自己实践摸索,确始终没有调试成功,希望那位能指点我一下谢谢! 
1) 使得SQL Server2K 有 XA能力。 
   下载sql Server2005 JDBC驱动程序( 
http://www.microsoft.com/downloads/details.aspx?FamilyID=E22BC83B-32FF-4474-A44A-22B6AE2C4E17&displaylang=zh-cn)。 
安照里面的指南安装好,也成功测试了中间的一个例子。 
2) 用WSAD JNDI的方式获取数据源。用WSAD中的XA方式配置数据源。 
按照IBM官方网上(http://www.ibm.com/developerworks/cn/websphere/library/techarticles/0407_woolf/0407_woolf.html)的例子, 
建立了几个连接,也就是我的Spring配置文件中要使用的数据源。 

 

调试中的问题:

出现异常“未能找到存储过程 'master..xp_jdbc_open'”

解决:在Sql server中查找,确实没有那个存储过程。由于用的是sql server 2005 jdbc 驱动程序,而且WSAD5.1也只提供了sql server 2000 jdbc driver(XA),所以推断是不是版本不匹配。于是下载了sql server 2000 jdbc driver,这样成功了。

分享到:
评论

相关推荐

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

    7. **分布式事务原理**: 分布式事务通常采用两阶段提交(2PC)、三阶段提交(3PC)或者更高级的补偿事务(Saga)等算法来协调跨多个节点的事务。Atomikos通过JTA接口实现了这些机制,使得应用程序无需关心底层实现,...

    java分布式事务demo

    3. **两阶段提交(2PC)**:这是一种经典的分布式事务解决方案,包括准备阶段和提交阶段。所有参与者首先在准备阶段进行预提交,然后在提交阶段根据所有参与者的结果决定是否正式提交。然而,2PC存在单点故障、阻塞...

    基于Spring4.1.7+atomikos+mybaits 实现两阶段的分布式事务处理

    本文将深入探讨如何利用Spring 4.1.7、Atomikos以及MyBatis实现两阶段的分布式事务(2PC,Two-Phase Commit)。这是一套强大的解决方案,特别适用于处理跨多个数据库或服务的复杂业务逻辑。 首先,我们需要理解什么...

    Dubbo分布式事务解决方案

    - **定义**: TCC是Try-Confirm-Cancel的缩写,它是一种基于两阶段提交的思想,但又不同于传统的两阶段提交协议。在TCC模式下,每个服务都需要实现Try、Confirm和Cancel三个接口。 - **应用场景**: 适用于对数据...

    分布式事务之Seata.pdf

    分布式事务的实现和处理机制有很多,如两阶段提交(2PC)、三阶段提交(3PC)、基于补偿的事务(Saga)等。在选择具体的事务管理方案时,需要根据业务场景的具体需求,考虑到数据一致性和系统可用性之间的权衡。 ...

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

    3. 跨服务事务协调:在微服务架构中,分布式事务可能涉及多个服务,需要使用如Saga、TCC(Try-Confirm-Cancel)或2PC(两阶段提交)等分布式事务协调算法。 4. 性能影响:分布式事务会增加系统的复杂性,可能导致...

    springcloud整合分布式事务框架TX-LCN

    但传统的两阶段提交(2PC)等方案在面对大规模分布式环境时性能瓶颈明显,因此诞生了如TX-LCN这样的新型分布式事务框架。 2. **TX-LCN组件介绍**: - **TC(Transaction Coordinator)**:事务协调器,负责全局...

    spring搭建分布式事务所需嘉宝atomikos加druid配置分布式事务

    Spring框架提供了多种实现分布式事务管理的方式,其中一种是通过集成第三方工具如Atomikos来实现。Atomikos是一个开源的事务处理服务,支持JTA(Java Transaction API),能很好地处理分布式环境中的ACID(原子性、...

    分布式事务视频教程

    在这样的背景下,分布式事务成为了处理跨服务数据一致性问题的关键技术。 **分布式事务**是指涉及两个或更多节点上的资源管理器的一组操作,这些操作要么全部完成,要么全部不完成。它确保了不同服务之间数据的一致...

    分布式事务实践 解决数据一致性

    还有XA以及两阶段提交,并通过实例演示了使用JTA,通过两阶段提交,实现多数据源的事务实现。... 4-1 Spring事务机制_基本接口 4-2 Spring事务机制_实现 4-3 Jpa事务实例 4-4 Jms事务原理 4-5 Jms-session事务实例 4...

    spring整合atomikos实现分布式事务的方法示例

    Atomikos 的主要功能在于支持分布式事务的两阶段提交(2PC)协议。在2PC中,事务的提交过程分为准备阶段和提交阶段。在准备阶段,事务协调者询问所有参与者的资源是否准备好提交,如果所有参与者都同意,那么在提交...

    【Java】RocketMQ实现分布式事务.zip

    在使用RocketMQ实现分布式事务时,通常会采用两阶段提交协议(2PC)来确保这一点。两阶段提交协议将事务过程分为两个阶段:准备阶段和提交/回滚阶段。在准备阶段,事务协调者询问所有参与者是否准备好提交事务,只有...

    SpringBoot分布式事务.zip

    分布式事务的设计与实现涉及到多个概念和技术要点,如两阶段提交(2PC)、三阶段提交(3PC)、柔性事务、幂等性保证、补偿事务(TCC)等。这些策略在不同的应用场景下有不同的适用性,开发者需要根据实际的业务需求...

    spring事务及分布式事务.zip

    分布式事务通常有多种解决方案,比如两阶段提交协议(2PC),三阶段提交协议(3PC),以及最终一致性等。然而,分布式事务的实现往往比较复杂,且可能影响系统的性能和可伸缩性。 Spring框架通过Spring Batch和...

    【Java】RocketMQ实现分布式事务_pgj.zip

    在使用RocketMQ来实现分布式事务时,通常采用的是两阶段提交协议的变种。在第一阶段,消息的生产者会发送一个半事务消息到消息服务器上。此时,消息是暂时保存在服务器上,但不会被消费者消费。然后,在第二阶段,...

    【Java】整合spring+mybatisPlus实现分布式事务和单数据库事务(mysql postgresql sqlserver)_pgj.zip

    在分布式事务的实现上,一个常见的解决方案是使用两阶段提交协议(2PC),该协议通过一个协调者来控制多个参与者。在本案例中,可能使用的是一种轻量级的实现,即Atomikos事务管理器。Atomikos是一个流行的开源事务...

    【Java】分布式事务SeataTCC模式-SpringCloud微服务添加TCC分布式事务.zip

    TCC模式是Seata支持的一种两阶段提交协议的扩展,它将事务分为Try、Confirm和Cancel三个阶段进行处理。TCC模式需要业务的编写者提供TCC三个阶段的具体实现。具体到Java环境下,尤其是在SpringCloud微服务架构中,...

    基于mysql,SpringBoot 分布式事务例子

    对于分布式事务,我们可以使用JTA(Java Transaction API)配合X/Open XA规范实现两阶段提交(2PC)。 MySQL作为广泛使用的SQL数据库,虽然默认不支持分布式事务,但可以通过InnoDB存储引擎启用行级锁和事务支持。...

    spring hibernate atomikos 分布式事务

    在实际应用中,Atomikos能够处理复杂的分布式事务场景,如两阶段提交(2PC),以保证ACID(原子性、一致性、隔离性和持久性)特性。同时,由于其高度的定制性和性能优化,即使在高并发环境中也能保持良好的性能。 ...

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

    **分布式事务的关键挑战**: 分布式事务处理面临的主要挑战包括两阶段提交(2PC)协议的性能瓶颈、事务的回滚与恢复、并发控制以及事务的隔离级别等。Atomikos通过优化的事务算法和智能的回滚策略,尽可能减少了这些...

Global site tag (gtag.js) - Google Analytics