谁能解决这个问题:关于web service 接口调用中事务的处理问题

hao_neverstop 2013-11-01 02:55:18
现假设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系统那边的代码正常执行完了.
----------------
请教下大家,对于这样的问题代码中应该怎么去控制?
...全文
478 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
无聊找乐 2013-11-06
  • 打赏
  • 举报
回复
不要做梦了, 分布式的事物用EJB, com+, CORBA 没有webservice什么事
安特矮油 2013-11-06
  • 打赏
  • 举报
回复
那只有A异常之后再调B的接口去处理之前的数据了
猫神jdx 2013-11-06
  • 打赏
  • 举报
回复
这种接口互相调用是事务控制不了的,因为B系统也有B系统自己的事务,A事务去管B事务就有干涉的嫌疑() 只能说,如果B正常,A因为网络出错,只能是,在异常代码位置,把要保存的内容弄到一个临时文件,到时候再把临时文件弄出来导入A数据库
hao_neverstop 2013-11-01
  • 打赏
  • 举报
回复
A系统是自己的系统,现在应该是B系统返回标识符吧。但是现在webservice只提供了这1个接口,没办法再对B系统进行查询了。
teemai 2013-11-01
  • 打赏
  • 举报
回复
A返回标识符,执行和非执行,调用者根据结果再对B进行请求根据A的结果以及之前B的操作结果再进行对应操作

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧