dポイントプレゼントキャンペーン実施中!

webシステムにて、クライアントからのリクエストをサーバが処理している
途中にクライアントがブラウザを閉じた場合、サーバ側の処理が
続いてしまいます。

ブラウザが閉じられた場合、なんらかのタイミングでサーバ側が
それを感知して処理を途中でキャンセルする方法はありますでしょうか。
※サーバ側の処理は大変重く、20~40分程かかるものとします。
 又、その処理自体を軽くする事は出来ません。

言語:Java(JSP+servlet)
APサーバ:Tomcat

A 回答 (2件)

 これは大変ですね(笑)。


 サーバ応答に20分もかかるとすればブラウザ側はデータ受信処理がタイムアウトしていまい、閉じたも同然です。変化しないブラウザの前でオペレータが何もせずに待っているというシーンは考えにくいです。
 クライアント側はブラウザを使わずに、定期的にサーバをアクセスする専用アプリケーションを作成して断続的に通信しながら待機させるしくみが望ましいのではないでしょうか。Javaアプレットで同様な動作をさせることも可能とは思いますが、デバッグの容易さとか通信が切断した場合の回復処理などを組み込むことも考えると安定したアプリケーションの開発が難しいのではないかと思います。
    • good
    • 0

通常は自動再リクエスト方式により、クライアント画面(ブラウザ画面)には処理の進捗状況を報告します。

再リクエストの正常な到着をセッションのsetMaxInactiveInterval()で制御し、タイムアウト(クライアントがブラウザを閉じた)はHttpSessionBindingListenerで処理します。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!