不论两层或三层体系,事物处理都是通过两阶段提交实现的。在第一阶段,每个执行的的资源\记录被写入 事物环境(Transcation Context)中,然后资源协调者顺序查询每一个参与事物的执行是否成功,如果都没有问题的话,就进入第二阶段,每个执行都开始Commit它的操作。如果有一个执行有问题的话,资源协调者通知所有下属的执行放弃Commit,恢复数据原状态。 参考COM+的事务运行,如果一个组件是需要事务的,那么在组件创建时,事务就已经开始了,在组件销毁时进行事务投票,如果是根事务,则进行提交或回滚事务。(如果组件支持池化,这两种情况发生在组件激活和休眠事件中)。于是我们定义一个类如下。 //业务类的祖先类,用于提供统一的事务支持 TTS_DL = class private isRootTrans:Boolean; //是否是根事务 isNeedTrans:Boolean; //是否需要事务 public DBOperate:TDBOperate_DL; //操作数据库的类的实例 procedure SetComplete; procedure SetAbort; constructor Create(const newDBOperate:TDBOperate_DL;needTrans:Boolean);//是否需要事务支持 destructor Destroy;override; end; 在该类创建时,除了传递进操作数据库的类的实例外,再传入一个是否需要事务的标志,因为如果是只做读取数据库的操作,就用不着事务了。
|
正在阅读:用Delphi模拟组件的两阶段提交用Delphi模拟组件的两阶段提交
2004-02-14 09:34
出处:CSDN
责任编辑:linjixiong
键盘也能翻页,试试“← →”键