2011-02-09 2 views
2

WeblogicサーバにSpring Webアプリケーションを作成しようとしています。これはいくつかの独立したデータベースSELECT(つまり、安全に同時に呼び出すことができます)を実行するものです。Webアプリケーション用の同時データベースアクセスパターン

結果がすべて取得されると、結果を含む電子メールがユーザーリストに送信されます。

この問題を回避するには、どのような方法が良いですか?私が先に進み、デーモンスレッドを作成してその仕事をするのを助けるか、または行うことができるSpringライブラリがありますか?

EDIT:これはアプリケーション層(ビジネス要件)で行われなければならず、電子メールはWebアプリケーションから送信されます。

+0

「15分」と言ったときに「15秒」を意味しましたか? – Nishant

+0

は、データや長時間実行されているリクエスト、またはその両方を処理することが心配されている問題ですか? – hvgotcodes

+0

'1つは実行に15分かかります.'それは本当に遅いです、何かがそこで効率的に実行されていません。 –

答えて

1
  1. すべてを最適に実行していますか?何十ものテーブルを横切って何千もの行があり、結合のヘッコーファットが必要な場合を除き、15分は本当に長い時間です。これが最優先事項です。なぜそれほど時間がかかりますか?

  2. 設定した間隔で電子メールジョブを実行していますか、またはWebアプリケーションから呼び出されていますか?間隔が設定されている場合は、外部のジョブで実行する必要があります。別のマシンで実行する必要があります。デーモンまたは石英スケジューラを使用できます。

  3. このプロセスをWebアプリケーションから起動する必要がある場合は、非同期で行う必要があります。 JMSを使用することもできますし、新しいジョブ要求を入力するテーブルを用意して、X時間ごとに新しいジョブを探すデーモンプロセスを使用することもできます。バックグラウンドスレッドを起動することは可能ですが、エラーが発生しやすく、合理化の価値はありません。特に、他の有効なオプションがより簡単であるためです。

+0

1.正直なところ、すべてが最適に行われているかどうかはわかりませんが、データベースを制御することはできません。私は起動するSQL文の固定セットを与えられているので、私の懸念はこの要件を回避するために働いており、アプリケーションレベルで動作させています。 2.電子メールジョブは私のWebアプリケーションから呼び出されます。 3.別のJMSキューのサブスクライバを追加するには、(私が働いている)処理に時間がかかりすぎます。私が残した唯一の答えは、あなたが言ったようにエラーが起こりやすいバックグラウンドスレッドだと思います。ありがとうございました。 – Russell

+0

@russellの場合、webappの外で処理ジョブを実行する必要があります。なぜ、「仕事の要求をテーブルに入れて、単純なデーモンに新しいジョブの処理方法をpingしてもらうのはなぜですか? – hvgotcodes

+0

途中で唯一のことは、テーブルを作成する権限がないということです。それとも、比喩的に話していたのですか?ここでは専門家が推奨するものが最良の方法だと確信していますが、私の場合は回避策が必要な場合があります。 – Russell

0

あなたは実行時間の長い、おそらく非同期タスクのための春のサポートについて尋ねている場合は、春のJMS supportと春Batch間の選択肢を持っています。

+0

バッチを見たいかもしれません。ありがとうございました。 – Russell

0

スプリングクォーツを使用してジョブをスケジュールすることができます。そうすれば、ジョブは同じコンテナで実行されますが、HTTP要求をトリガーする必要はありません。

+0

ありがとう!私もこれを検討していた。 – Russell

関連する問題