1

バックエンドに Oracle 11g がある Java Web アプリケーションで、Oracle ストアド プロシージャがジョブを完了したら、プログラム (サーブレットの可能性があります) の実行を開始したいと考えています。

私の考えは、プロシージャがジョブを完了し、テーブルに設定されたトリガーがこの Java プロセスを開始するときに、レコードをデータベース テーブルに挿入することです。

どうすればそれを達成できますか?これを達成するために Quartz Scheduler を使用できる場合は、それを達成する方法へのポインタを提供してください。そうでない場合、他にどのようなオプションがありますか?

4

2 に答える 2

1

過去にUTL_HTTPを使用して、サーブレットにリクエストをPOSTしました。これには、シンプルであり、応答メッセージをデータベースに簡単に記録/利用できるという潜在的な利点があります。これには、ACLルールを追加する必要があります:http ://www.oracle-base.com/articles/11g/fine-grained-access-to-network-services-11gr1.php

サーブレットからデータベースへの接続を開始し、トリガーでDBMS_ALERTシグナリングを使用することもできます。http://docs.oracle.com/cd/B19306_01/appdev.102/b14258/d_alert.htmこれには、次のような潜在的な利点があります。迅速で、ACLルールは必要ありません。

最後に、トリガーを使用して行をどこかに挿入したり、ステータス列を更新したりして、サーブレットが一定の間隔でポーリングして、機能するかどうかを確認することができます。これはすべてのソリューションの中で最も単純ですが、実装するのはそれほどエレガントでも楽しいものでもありません。

于 2013-02-20T08:30:40.493 に答える
1

Oracle の一部として利用可能な UTL_HTTP を使用して、Oracle ストアド プロシージャ内から POST 呼び出しをサーブレット URL に送信することもできます。詳細はこちら

または、サーブレットを取り除き、ストアド プロシージャとして Oracle にインポートできる Java ストアド プロシージャを作成して呼び出すこともできます。詳細はこちら

于 2013-02-20T08:28:05.953 に答える