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