これはjsp
withservlet
プロジェクトのいずれかにあるとします。
何かを計算するためにボタンをクリックしました。このプロセスは、いくつかのステップで実行されるか、5 時間近くかかる同期スレッドを使用して実行されます。
クリック後にブラウザ ウィンドウを閉じるとどうなりますか? 計算プロセスは停止しますか、それとも続行しますか?
後者の場合 (続き)、2 時間後にアカウントにログインすると、何が表示されますか? 計算の進行状況をリアルタイムで見たい。
私は何をすべきか?
これはjsp
withservlet
プロジェクトのいずれかにあるとします。
何かを計算するためにボタンをクリックしました。このプロセスは、いくつかのステップで実行されるか、5 時間近くかかる同期スレッドを使用して実行されます。
クリック後にブラウザ ウィンドウを閉じるとどうなりますか? 計算プロセスは停止しますか、それとも続行しますか?
後者の場合 (続き)、2 時間後にアカウントにログインすると、何が表示されますか? 計算の進行状況をリアルタイムで見たい。
私は何をすべきか?
この種の処理には計画が必要です。多くのエッジケースがあります。プロセスがすでに実行されている場合はどうなりますか? サーバーが処理の途中で終了した場合はどうすればよいですか? 再起動できますか?処理を中断することはできますか? すべてのユーザーがこの処理を開始できますか、それとも許可されたユーザーだけですか?
わかりました、今答えに。別のバックグラウンド スレッドで処理を実行したい。Executor クラスを参照してください。次に、その処理の進行状況をどこかに保存し (ここでは db と考えてください)、その進行状況を表示する別のページを作成する必要があります。また、処理を開始したユーザーを覚えておく必要がある場合もあります。これにより、進行状況を要求しているユーザーにどの進行状況情報を表示するかがわかります。
とても簡単!:)