質問

クライアントがデータを入力して送信ボタンをクリックすることでレポートを生成できるように、Webアプリに機能を実装しています。

問題は、レポートの生成に時間がかかり、ユーザーが入力したデータが間違っているとレポートが生成されない可能性があることです。

完全なレポート生成タスクには多くのサブタスクがあり、クライアントが送信を押すと、そのページのすぐ下に、レポート生成タスクのステータス/進行状況をさまざまなサブタスクに分割して表示したい

- Validating input data ------ Done
- Fetching the data     ------ In Progress
 and so on,

WebレイヤーでStruts2、jQueryを使用してこれを達成するにはどうすればよいですか?

ご協力いただければ幸いです。

ありがとう

役に立ちましたか?

解決

同様の問題がありました。トランザクションには通常20秒かかり、場合によっては1分以上かかります。より簡単な解決策があると考えましたが、このようなスキームになりました

  1. 長時間実行中のリクエストを受信すると、セッションが作成され、リクエストを処理するための新しいスレッドが生成されます。
  2. 「Collecting data ...」を表示するテキストを含むページがすぐに返されます。このページには、毎秒更新されるタイマーが含まれています。リロードURLのクエリパラメーターにはセッションID(HttpSessionは使用しません)が含まれています。
  3. アクションハンドラは、セッションIDを含むリクエストを見ると、セッションが開始されたことを認識し、作業スレッドによって更新されている状態変数を確認します。完了していない場合は、ページを新しいステータス" Retrieving data from DB1 ..."で更新します。これをリロードとして実行すると、ちらつきが発生します。気になる場合は、AJAXを使用してステータスを更新できます。
  4. 作業スレッドが完了し、ページを配信する準備ができたら、呼び出しは単に結果を返します。

ロードバランサーに問題が発生しました。スキームが機能するには、すべてのリロードが同じサーバーに戻される必要があります。幸いなことに、ロードバランサーはセッションIDに基づいてスティッキールーティングをサポートしています。

他のヒント

Struts2 ExecuteAndWaitインターセプターを見てください。 http://struts.apache.org/2。 x / docs / execute-and-wait-interceptor.html

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top