【发布时间】:2011-06-14 11:52:56
【问题描述】:
免责声明:我对 Web 服务的工作原理只有非常基本的了解,对事务等高级 WS 主题了解不多。
假设我正在使用 Java EE、JPA 等开发在线商店。还假设我与在线支付处理提供商签订了处理付款的合同,并且他们为我提供了 WS API。
现在让我们假设客户已下订单。在会话 bean 中(例如在 OrderSB.placeOrder 中)我打开了一个事务,在数据库中保存了一个订单,现在我正在调用支付提供商的 WS API。它成功返回(并且我假设现在我的客户的帐户已被借记)但在我可以保存订单的关联付款之前(订单和付款之间存在一对一的关系)发生异常并且我的交易被回滚。
如何确保在发生此类异常时不会从我客户的帐户中扣款?或者换句话说,WS 调用和OrderSB.placeOrder 都应该成功完成并提交,或者它们都应该一起回滚。
如果WS调用失败,回滚placeOrder很容易,但是不知道WS调用返回后如何回滚。
【问题讨论】:
标签: web-services jakarta-ee ejb jax-ws