Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

長時間掛かる処理に関する対応について

現在プロキシサーバのFWセッションタイムアウトの影響により、
長時間掛かるリクエストが強制修了してしまいます。
これを解決するために、長時間掛かるリクエスト実行後、
処理中画面を表示して、裏でAjaxを使った非同期処理を実行し、
処理が修了した段階で処理中画面に処理結果を出力することで対応しようと考えています。

しかし、多々うまく動きません。
Servletにリクエスト送信後、JSPファイルをincludeして、
その結果を処理中画面に表示しようとしたところ、
includeの際に IllegalArgumentException: Response cannot be null
が発生します。
また、AsyncContextで最後にJSPに対してdispatchしてみましたが、何も変化がありませんでした。

非同期処理後JSPにリクエストを渡して、その結果を処理中画面に表示する方法はあるのでしょうか?

そもそも、長時間掛かる処理では、一般的にどのように設計するものなのでしょうか?

ご指導のほど、よろしくお願いいたします。

1

回答

174

閲覧

1件の回答

評価

10

エラー内容からすると、dispatch時にレスポンスにnullを渡したのだろうか。

リクエストとレスポンスは常に対になり、nullということはない。
最初のリクエストは、非同期処理をキックした後セッションでもファイルでも何でもいいが、その状況が後で分かる形にして「処理中」のレスポンスを返す(ここを理解していない気がする)。

次にインターバルを付けて状況確認のリクエストをあげる。このリクエストでは最初のリクエストで設定したセッションなりを確認して、「処理中」または「完了」のレスポンスを返す。

クライアントは「完了」のレスポンスが返ったら、完了画面を表示または遷移する。

回答する

ログインしていません。

ログインしなくても回答はできますが、ログインすると、質問・回答の管理、更新があった場合のメールでの通知を受けることができます。 アカウントをお持ちでない方は会員登録を行ってください。

ユーザ名匿名