来自:http://www.iteye.com/topic/81912
需求背景:
由于系统涉及到多个数据源,所以想用两阶段提交事务(分布式事务)来保证数据的一致性,完整性。
测试环境:
OS-->win2000
DB-->sql server 2K
j2ee容器和IDE-->WSAD
开发框架:struts+spring+hibernate
配置文件:
- <bean id="dataSourcedgLabourDB" class="org.springframework.jndi.JndiObjectFactoryBean">
- <property name="jndiName" value="jdbc/dg_labour"/>
- </bean>
-
- <bean id="sessionFactorydgLabourDB" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
- <property name="dataSource" ref="dataSourcedgLabourDB"/>
- <property name="mappingDirectoryLocations">
- <list>
- <value>classpath:/com/legend/shipment/domain/dgLabour</value>
- </list>
- </property>
- <property name="hibernateProperties">
- <props>
- <prop key="hibernate.dialect">${hibernate.dialect}</prop>
- <prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
- <prop key="hibernate.cache.use_query_cache">${hibernate.cache.use_query_cache}</prop>
- <prop key="hibernate.cache.provider_class">${hibernate.cache.provider_class}</prop>
- </props>
- </property>
- </bean>
-
- <bean id="wasTxMgr" class="org.springframework.transaction.jta.WebSphereTransactionManagerFactoryBean"/>
-
- <bean id="transactionManagerdgLabourDB" class="org.springframework.transaction.jta.JtaTransactionManager">
- <property name="transactionManager">
- <ref local="wasTxMgr"/>
- </property>
- </bean>
-
- <bean id="txProxyTemplatedgLabourDB" abstract="true"
- class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
- <property name="transactionManager"><ref bean="transactionManagerdgLabourDB"/></property>
- <property name="transactionAttributes">
- <props>
- <prop key="save*">PROPAGATION_REQUIRED</prop>
- <prop key="remove*">PROPAGATION_REQUIRED</prop>
- <prop key="del*">PROPAGATION_REQUIRED</prop>
- <prop key="update*">PROPAGATION_REQUIRED</prop>
- <prop key="*">PROPAGATION_REQUIRED,readOnly</prop>
- </props>
- </property>
- </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,这样成功了。
分享到:
相关推荐
7. **分布式事务原理**: 分布式事务通常采用两阶段提交(2PC)、三阶段提交(3PC)或者更高级的补偿事务(Saga)等算法来协调跨多个节点的事务。Atomikos通过JTA接口实现了这些机制,使得应用程序无需关心底层实现,...
3. **两阶段提交(2PC)**:这是一种经典的分布式事务解决方案,包括准备阶段和提交阶段。所有参与者首先在准备阶段进行预提交,然后在提交阶段根据所有参与者的结果决定是否正式提交。然而,2PC存在单点故障、阻塞...
本文将深入探讨如何利用Spring 4.1.7、Atomikos以及MyBatis实现两阶段的分布式事务(2PC,Two-Phase Commit)。这是一套强大的解决方案,特别适用于处理跨多个数据库或服务的复杂业务逻辑。 首先,我们需要理解什么...
3. 跨服务事务协调:在微服务架构中,分布式事务可能涉及多个服务,需要使用如Saga、TCC(Try-Confirm-Cancel)或2PC(两阶段提交)等分布式事务协调算法。 4. 性能影响:分布式事务会增加系统的复杂性,可能导致...
但传统的两阶段提交(2PC)等方案在面对大规模分布式环境时性能瓶颈明显,因此诞生了如TX-LCN这样的新型分布式事务框架。 2. **TX-LCN组件介绍**: - **TC(Transaction Coordinator)**:事务协调器,负责全局...
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...
对于分布式事务,我们可以使用JTA(Java Transaction API)配合X/Open XA规范实现两阶段提交(2PC)。 MySQL作为广泛使用的SQL数据库,虽然默认不支持分布式事务,但可以通过InnoDB存储引擎启用行级锁和事务支持。...
Atomikos 的主要功能在于支持分布式事务的两阶段提交(2PC)协议。在2PC中,事务的提交过程分为准备阶段和提交阶段。在准备阶段,事务协调者询问所有参与者的资源是否准备好提交,如果所有参与者都同意,那么在提交...
在实际应用中,Atomikos能够处理复杂的分布式事务场景,如两阶段提交(2PC),以保证ACID(原子性、一致性、隔离性和持久性)特性。同时,由于其高度的定制性和性能优化,即使在高并发环境中也能保持良好的性能。 ...
**分布式事务的关键挑战**: 分布式事务处理面临的主要挑战包括两阶段提交(2PC)协议的性能瓶颈、事务的回滚与恢复、并发控制以及事务的隔离级别等。Atomikos通过优化的事务算法和智能的回滚策略,尽可能减少了这些...
每个操作都是本地事务,这样可以避免传统两阶段提交(2PC)带来的性能瓶颈。在Try阶段,业务逻辑执行初步操作,如果成功则进入Confirm阶段,确认这些操作;如果在Try阶段出现问题,则会执行Cancel操作,撤销已经完成...
分布式事务的核心在于解决CAP(一致性、可用性、分区容错性)理论中的问题,而2PC(两阶段提交)或3PC(三阶段提交)协议常被用作分布式事务的解决方案。Atomikos通过内部实现这些协议,为开发者提供了透明的事务...
XA事务是分布式事务的一种标准,通过两阶段提交(2PC)协议协调参与者,保证事务的正确性。 本案例中的关键步骤可能包括: 6. 配置Atomikos:在Spring配置文件中,你需要定义Atomikos的事务管理器,并配置相关的...
除了LCN之外,还有其他的分布式事务处理协议,比如二阶段提交(2PC)和三阶段提交(3PC)。 - **二阶段提交**(2PC): - **准备阶段**:参与者将事务操作记录到日志中但不提交,等待协调者的指令。 - **提交阶段...
CTT模式(Correction Try Confirm)和Saga模式则是另外两种分布式事务处理方式,它们通常用于长事务,通过多个微服务间的协调来实现事务一致性。 CTT模式由Try、Confirm和Cancel三个阶段组成,Try阶段执行业务操作...
分布式事务是计算机科学中涉及数据库管理系统的一个重要概念,特别是在大型企业级应用和...Spring框架和WebLogic Server这样的工具为开发者提供了实现分布式事务的便利,使得在复杂的企业级环境中处理事务成为可能。
总结来说,Seata的AT模式为SpringCloud微服务提供了一种简便的分布式事务解决方案,通过自动化处理事务的提交和回滚,使得开发者可以更专注于业务逻辑的实现。但需要注意,实际使用时需要权衡其带来的性能影响和系统...