0

jsp/servletベースのWebアプリがあります。

サーブレットを呼び出す「クリーンアップ」ボタンがあり、リクエストはDAOクラスまで送信されます。DAOクラスは、マスターテーブルからバックアップテーブルへのデータの移動、マスターテーブルからのデータの削除など、さまざまなDBアクティビティを実行します。

現在のところ、このアクティビティは同期であり、ユーザーは応答が送信されるまで待つ必要があります。

「クリーンアップアクティビティがトリガーされました」というメッセージが表示されるだけの非同期タスクと同じシナリオを実装したい

このタスクを実行するための最良/最も簡単な方法は何でしょうか。スケジューラーが使えません。

私のコンテナはTomCatです。

4

3 に答える 3

2

ExecutorService最も堅牢なソリューションです。単純なスレッドを作成するだけでも十分です。ただし、より大きな問題は同期です。Semaphore2人のユーザーが同時にクリーンアップしないかどうかを制御するために使用します。

于 2012-10-22T18:45:33.097 に答える
2

これに対する最も単純ですが異なる解決策は、クライアント側でいくつかのAJAX動作を使用することです。ページでAJAXを実現するのに役立つシンプルで強力なフレームワーク(JSファイル)がたくさんあります。AJAXを使用すると、リクエストがサーバー側で処理されている間に、リクエストを非同期で送信し、クライアント側のメッセージ「Clean UpActivitiesTriggered」を表示するだけです。ユーザーが待機すると、サーバープロセスが返され、「成功」メッセージが表示されます。それ以外の場合、ユーザーは他のページに移動したり、他のアクションを実行したりできます。

于 2012-10-22T18:46:06.230 に答える
0

私たちはプロジェクトのためにこれを一度行いましたが、それはかなりうまくいきました。

リクエストの処理に問題がない限り、200okをユーザーに送信しました。そして、javaexecutorserviceを使用してクリーンアップを実行しました。

また、問題が発生した場合は、ユーザーに個別に通知します。

于 2012-10-22T18:46:40.507 に答える