我有两个应用程序。一个是 OrderService,另一个是 TradeService。在贸易服务中,有一种交易方法“购买”。
当 Trade Service 使用 Web Service 调用 Order 服务的 SubmitOrder 方法时会出现问题。
问题描述:
Buy 方法中的所有步骤都在一笔交易下。
当我们调用 buy 方法时,它会创建一个 Order 对象。
当此方法使用 Web 服务调用 Submit Order 方法时,它会传递订单 ID。
提交订单方法使用此 ID 从数据库加载订单对象。
但是在 Load 方法中它给出了延迟初始化异常:会话已关闭。(两个应用程序共享同一个数据库)
对此的可能解决方案是使 Submit Order 方法具有事务性。
它导致另一个死锁问题。
- 死锁的原因,A. Buy 方法锁定 Id 为“xyz”的订单对象。并发送相同的 ID 提交订单方法。B. 现在 Buy 方法正在等待提交订单的回复。C. Submit Order 方法无法加载 order 对象,因为它已经被 buy 方法锁定。D. 所以提交订单方法正在等待获取锁。因此它是死锁条件。
注意:这两个应用程序都使用 Spring MVC、Spring Web Service 和 Hibernate。
请帮助我摆脱这种情况。提前致谢。(如果需要,我可以发布部分代码)