私は休止状態で比較的新しいので、優しくしてください。実行時間の長いメソッド (最長 2 分) に問題があり、DB に格納されているオブジェクトのステータス フィールドの値を変更しています。以下の疑似コードは、私の問題を説明するのに役立ちます。
public foo(thing) {
if (thing.getStatus() == "ready") {
thing.setStatus("finished");
doSomethingAndTakeALongTime();
} else {
// Thing already has a status of finished. Send the user back a message.
}
}
疑似コードについては、あまり説明する必要はありません。doSomethingAndTakeALongTime() を実行したいのですが、ステータスが「準備完了」の場合のみです。私の問題は、doSomethingAndTakeALongTime() が終了するまでに 2 分かかり、物のステータス フィールドへの変更が foo() を離れるまでデータベースに保持されない場合に発生します。そのため、別のユーザーがその 2 分間にリクエストを送信すると、if ステートメントは true と評価されます。
フィールドを更新してセッションを手動でフラッシュしようとしましたが、うまくいかなかったようです。私はここから何をすべきかわからないので、助けていただければ幸いです。
PS: 私の休止状態のセッションは春に管理されています。