COM+中的事务问题?(100分)

  • 主题发起人 主题发起人 demon_yx
  • 开始时间 开始时间
D

demon_yx

Unregistered / Unconfirmed
GUEST, unregistred user!
在COM+中,用setcomplete和setabort来实现事务的提交和回滚,我想知道的是:事务的提交和回滚
是什么意思?事务的提交和回滚的范围是怎样来确定的?
 
Setcomplete和SetAbort是参与到COM+事务管理过程的COM+组件调用的方法
当COM+组件成功执行了它的逻辑程序代码,就会调用setcomplete来投票赞成Commit
该事务,如果调用setcomplete的是根COM+组件,那么COM+会开始Commit整个事务管理
反之如果COM+组件在执行它的逻辑程序代码时发生错误,就要调用SetAbort来投票反对
Commit该事务管理
至于提交和回滚的范围,则是COM+组件所参与的整个事务
在李维的书里有详细论述
 
多谢berock,事务的开始和结束是由我们决定的,还是由com+,或者其他来提供的!
 
事物的开始可以自己控制,即自己可以建议一个事务环境;也可由com+管理(选择需要事务);
结束由com+决定,(实际上还是由setcomplete与setabort结束),事务的提交成功看大家都
投赞成票否(还有资源管理如硬盘等)
 
如果在代码中想放弃之后,再另外把错误的信息写进日志后怎么做呢。事务回滚之后,可以继续做这样的事吗?
 
begin
trans
ICustomer:=coCustomer.create;<----这里调用了com+中的一个接口,这个com+如果要用事务,是不是在
建立只要选择support transactions就行了??
ICustomer.GetData;
commititrans
rollbacktrans
 
你要多看一下李维的那本ADO_MTS_COM+,里面有对事务的详细解释.每一个完整事务都有一个
根事务,根事务之内的便是你所问的范围之内.它的交易种类要设成需要新的交易;而后面的
事务就设成需要交易.一环扣一环,任何一环出了问题,就会最终ROLLBACK.一两句话说不清楚,
你还是找本书看.然后有了具体的不理解的地方,再来问.
你看那本书的第6章:MTS/COM+的核心技术-交易管理,以及后面的章节,然后照着来,应该会很
有收获.
 
begin
trans
ICustomer:=coCustomer.create;<----这里调用了com+中的一个接口,这个com+如果要用事务,是不是在
建立只要选择support transactions就行了??
ICustomer.GetData;
commititrans
rollbacktrans
我的观点对吗?
 
多人接受答案了。
 
后退
顶部