问题描述:
我有一个本地方法,修改数据库a中的表b的一行数据
然后引用一个webservice,里面有一个方法,插入c数据库中表d的一行数据
现在我要两个操作要么都成功,要么都失败
变态扩展
引用一个webservice,修改数据库a中的表b的一行数据
然后引用一个webservice,里面有一个方法,插入c数据库中表d的一行数据
现在我要两个操作要么都成功,要么都失败
我有一个本地方法,修改数据库a中的表b的一行数据
然后引用一个webservice,里面有一个方法,插入c数据库中表d的一行数据
现在我要两个操作要么都成功,要么都失败
变态扩展
引用一个webservice,修改数据库a中的表b的一行数据
然后引用一个webservice,里面有一个方法,插入c数据库中表d的一行数据
现在我要两个操作要么都成功,要么都失败
实现相对简单, 不过藕合性比较高。2,提供取消方法:
setp1
update d (x) select x from c
if step1.error
rollback
else
{ call webservice.operaterMethod
if thisMethod.error
{ rollback
call webservice.rollbackMethod
}
}难度在于 webService.rollbackMethod 的实现, 因为你无法直接利用现成的数据库方式来实现,要记录一些当时的操作的原始数据,还要考滤并发时的情况。 需要详细和严谨的设计
考虑分布式日志中只需加个事务ID(比如使用登录用户的ID)即可。