问题描述
|
免责声明:我对Web服务的工作方式只有一个非常基本的了解,对诸如事务等高级WS主题了解不多。
假装我正在使用Java EE,JPA等开发在线商店。也假装我与在线支付处理提供商签有合同来处理付款,并且他们为我提供了WS API。
现在,让我们假设客户已下订单。在会话bean中(例如,在ѭ0中),我打开了一个交易,在数据库中保存了一个Order,现在我在调用支付提供商的WS API。它成功返回(并且我假设到现在为止我的客户的帐户已记入借方),但是在我可以保存订单的关联付款(订单和付款之间存在一对一关系)之前,例外发生并且我的交易被回滚。
如何确保在发生此类例外情况时不会从我的客户帐户中扣款?换句话说,WS调用和“ 0”都应该成功完成并提交,或者两者都应回滚。
如果WS调用失败,回滚2很容易,但是我不知道在WS调用返回后如何回滚。
解决方法
您为什么不完成placeOrder流程,而WS则仅在第一个成功完成的情况下进行调用呢?然后,就像您说的那样,很容易回滚placeOrder,如果第二次出现错误,则只需回滚第一个。还是我不明白您的问题对吗?