权衡Apache Geronimo EJB事务选项,第3部分: 综合所有事务 - 编程入门网
器的事务管理器将确保两个数据库在同一事务中更新。
单个会话 bean 开始事务并更新数据库 A,接着是 Java Message Service(JMS)操作。两个工作单元都是同一事务的一部分。如果 JMS 操作失败,事务将不会更新数据库。 几个事务管理器必须共同工作来执行分布式事务。通常指定一个单独的事务管理器(称为事务协调器或分布式事务管理器)来协调其他事务管理器。 事务管理器进而与资源管理器进行协调来对资源(可能是数据库或消息服务器)执行必需的提交或回滚。大多数数据库的事务管理器和资源管理器紧密地耦合在一起。 权衡Apache Geronimo EJB事务选项,第3部分: 综合所有事务(5)时间:2011-03-13 IBM Jonathan Sagorin两段式提交 通过使用某种协议进行通信来完成分布式事务,被称为两段式提交。从名字上看,您可能已经知道有两个阶段: 第一个阶段,即预提交: 事务协调器给每个事务管理器发送准备操作的信号。 事务管理器将操作(通常是数据更新)步骤(或细节)写入事务日志。如果失败,事务管理器使用这些步骤重复操作。 事务管理器本地创建事务并通知资源管理器对资源(例如,数据库或消息服务器)执行操作。 资源管理器执行操作并向事务管理器报告成功(准备提交信号)或失败(准备回滚)。 资源管理器等待事务管理器进一步的指令。 事务管理器向事务协调器报告成功或失败。 第二阶段,即提交阶段:在第二阶段中,第一阶段的结果将传送给所有事务管理器。如果任何事务管理器报告失败,所有的事务参与者都必须回滚。 事务协调器让所有事务管理器提交(或回滚)。 所有事务管理器将提交或回滚信息传递给其资源管理器。 资源管理器将成功或失败提示返回给事务管理器。 事务管理器向事务协调器报告成功或失败。 我们可以交谈吗? 分布式事务的最大挑战是对事务管理器之间的共用通信协议取得一致。用于两段式提交的标准化协议称为 XA 协议,但是并非所有的供应商都支持该标准。XA 协议定义了事务管理器和资源管理器之间的接口。 Geronimo 的事务管理器是 Java Open Transaction Manager(JOTM),一个开放源码的事务管理器。它实现 XA 协议并编译成 JTA。记住,JTA 是本系列文章中用来与事务管理器进行通信的接口。可以在 bean 管理的事务中使用其来指定何时启动、提交或回滚事务。 只要所有的事务参与者都对通信协议取得一致,它们就可以参与同一分布式事务。 它不是完美的 注意,使用分布式事务比使用本地事务要慢。所有事务参与者都需要更多的系统资源。事务协调器和所有事务参与者之间的网络交流都将影响系统响应时间。分布式事务由于涉及的事务管理器和资源管理器的数量,还将花费更多时间。 结束语 在这个介绍性的 关于 EJB 事务的系列 的最后一部分中,您已看到对选择的总结,并讨论了在 Geronimo 中使用 EJB 事务的一些附加配置选项及选择。 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |