2つのアプリケーションがあります。1つはOrderServiceで、もう1つはTradeServiceです。貿易サービスには、トランザクションである「購入」メソッドがあります。
TradeServiceがWebサービスを使用してOrderサービスのSubmitOrderメソッドを呼び出すと問題が発生します。
問題の説明:
Buyメソッドのすべてのステップは1つのトランザクションの下にあります。
Buyメソッドを呼び出すと、1つのOrderオブジェクトが作成されます。
このメソッドがWebサービスを使用してSubmitOrderメソッドを呼び出すと、注文IDが渡されます。
Submit Orderメソッドは、このIDを使用してDBからOrderObjectをロードします。
ただし、Loadメソッドでは、レイジー初期化例外が発生します。セッションが閉じられます。(両方のアプリケーションが同じデータベースを共有します)
これに対する考えられる解決策は、SubmitOrderメソッドをトランザクション化することです。
別のデッドロックの問題が発生します。
- デッドロックの理由、A。Buyメソッドは「xyz」と言うIDで注文オブジェクトをロックします。同じIDを送信して注文方法を送信します。B.現在、Buyメソッドは送信注文からの応答を待っています。C.オーダー送信メソッドは、購入メソッドによってすでにロックされているため、オーダーオブジェクトをロードできません。D.したがって、SubmitOrderメソッドはロックの取得を待機しています。したがって、デッドロック状態です。
注:どちらのアプリケーションも、Spring MVC、Spring Web Service、およびHibernateを使用します。
この状況から私を助けてください。よろしくお願いします(必要に応じてコードの一部を投稿できます)