如鹏网 大学生计算机学习社区

CowNew开源团队

http://www.cownew.com 邮件请联系 about521 at 163.com

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  363 随笔 :: 2 文章 :: 808 评论 :: 0 Trackbacks
      当使用多个资源合作解决一个问题的时候,必须使这些资源在一个事务中进行合作。为了实现这一目的,将事务分为两个阶段进行:
      第一阶段开始时,向此事务涉及到的全部资源发送提交前信息。此时,事务涉及到的资源还有最后一次机会来回滚事务。如果任意一个资源决定回滚事务,那么整个事务将被取消。否则,事务会被提交。
第二阶段只是在第一阶段没有回滚时才会发生。在这个阶段,所有的能被定位和单独控制的资源都将真正的更新。
      事务被分割成两个阶段来完成,这被称为两阶段提交协议。如果程序在同一个操作中需要访问多种资源,您就要使用两阶段提交事务。例如,如果从 JMS 队列中删除一个消息,并且随后更新数据库中基于这条消息的纪录,这时,要保证这两个操作的原子性。不应该出现一条消息已经从队列中被删除,而系统没有更新与此消息相关的数据库中的纪录的情况。可以通过应用程序的代码在数据库更新失败的时候 "撤销"对队列的操作。但是这样做并不还,因为当程序在执行“撤销”操作的过程中服务器突然崩溃的话就会导致数据出现不一致。作为替代的方式,应该使用两阶段提交事务。
posted on 2007-03-06 09:20 CowNew开源团队 阅读(349) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航: