SSM框架在调用第三方接口出错的情况下如何回滚事务?

weixin_36909073 2017-07-12 11:00:13
这个接口只有返回码。000表示成功,其他都是失败
这样子在别人的接口返回错误的信息如何让mybatis回滚事务?
...全文
1195 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
maradona1984 2017-10-24
  • 打赏
  • 举报
回复
不能throw Exception 难道你们系统就没继承RuntimeException的自定义异常? 实在不行就直接抛RuntimeException 参考 http://www.cnblogs.com/zxf330301/articles/5365619.html
  • 打赏
  • 举报
回复
既然你抛出 异常不起作用,那么你事务的隔离性是怎么配的? 参考
  • 打赏
  • 举报
回复
是异步操作么? 如果是异步的话,建议提供一个回滚的数据接口去操作 如果是同步调用第三方的接口,那么直接抛出一个异常,让aop自己回滚
dongbala123 2017-10-23
  • 打赏
  • 举报
回复
你catch了异常,spring事务通过aop来实现,你不在service里面抛出来就回滚不了,抛出来在controller里面处理异常啊
  • 打赏
  • 举报
回复
如果你是spribg管理事务得话,常用做法是抛出异常
李德胜1995 2017-07-13
  • 打赏
  • 举报
回复
具体是什么流程?这是分布式事务了吧?
李德胜1995 2017-07-13
  • 打赏
  • 举报
回复
引用 5 楼 weixin_36909073 的回复:
如图。。
在cacth里面使用这个回滚试试。。。

TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
weixin_36909073 2017-07-13
  • 打赏
  • 举报
回复


如图。。
weixin_36909073 2017-07-13
  • 打赏
  • 举报
回复
引用 1 楼 pany1209 的回复:
具体是什么流程?这是分布式事务了吧?
具体的就是 我在一个方法里面有改变数据库数据,然后去掉用第三方的接口。 在调用别人接口的时候没有返回成功的时候,如何让前面的操作回滚事务? 我也试了在调用别人接口不成功的时候抛出异常,但事务并没有回滚。。。
weixin_36909073 2017-07-13
  • 打赏
  • 举报
回复
引用 2 楼 perfectIdeal 的回复:
如果你是spribg管理事务得话,常用做法是抛出异常
是Spring的事务管理。 我自己的方法有抛出异常,但第三方的接口没有。我自己在返回码不是000的时候也试过抛出异常,但前面的操作并没有回滚。。 我想在调用第三方接口没成功的时候回滚前面的操作。

67,514

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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