日期:2014-05-17  浏览次数:20923 次

谁能解决这个问题:关于web service 接口调用中事务的处理问题
现假设A系统调用B系统的webservice. 
在A系统的程序中有如下代码: 
try{ 

//调用B系统的webservice 
//往往B系统的DB中更新数据 
//接受B系统返回值
//往A系统的DB中更新数据 
}catch(Exception e){ 
//回滚所有操作 

问题就是:如果在调用B系统的webservice时,如果B系统正常执行完了所有的操作,然后就在给A系统返回数据时,网络出现问题了,导致A系统这边调webservice的代码抛出了异常,所以A系统就回滚了所有的操作. 

这就出现了问题了:A系统以为B系统的webservice出现了问题,但实际上是,B系统那边的代码正常执行完了. 
---------------- 
请教下大家,对于这样的问题代码中应该怎么去控制?
web?service 事务 webservice事务控制

------解决方案--------------------
A返回标识符,执行和非执行,调用者根据结果再对B进行请求根据A的结果以及之前B的操作结果再进行对应操作
------解决方案--------------------
这种接口互相调用是事务控制不了的,因为B系统也有B系统自己的事务,A事务去管B事务就有干涉的嫌疑()
只能说,如果B正常,A因为网络出错,只能是,在异常代码位置,把要保存的内容弄到一个临时文件,到时候再把临时文件弄出来导入A数据库
------解决方案--------------------
那只有A异常之后再调B的接口去处理之前的数据了