2011-06-14 28 views
1

免责声明:我只是有怎样的Web服务工作的一个非常基本的理解,不知道多少有关高级WS主题,交易等如何安全地处理使用Web服务处理的在线支付?

让我们假设我正在开发使用Java EE的在线商店, JPA等。另外假设我与在线支付处理提供商签有合同来处理付款,并且他们为我提供了一个WS API。

现在让我们假装客户已下了订单。在会话bean中(例如,在OrderSB.placeOrder之内),我打开了一个事务,在数据库中保存了一个订单,现在我正在调用付款提供商的WS API。它成功返回(我假设现在我的客户的帐户已被扣除),但在我可以保存订单的关联付款(订单和付款之间存在一对一关系)之前,发生异常并且我的交易被回滚。

如何确保发生此类异常时,我的客户账户不会被扣除?换句话说,WS调用和OrderSB.placeOrder都应该成功完成并提交,或者两者都应该一起回滚。

如果WS调用失败,很容易回滚placeOrder,但我不知道如何在返回后回滚WS调用。

回答

0

为什么不完成placeOrder流程,并在第一次完成成功时执行WS调用?然后如您所说易于回滚placeOrder,如果错误出现在第二个回滚第一个。或者我不理解你的问题吗?