アーキテクトの要求により、Javaクラスを実行中のOracleのインスタンスにコンパイルすることは許可されていないため、代替手段を探しています。要件は、ネットワーク上のアプリケーションサーバーにあるJavaライブラリを利用することです。PL / SQLから別のマシンにあるJavaメソッドを呼び出すことは可能ですか?この記事でOracleの外部プロシージャについて説明しているのを見つけましたが、これが可能かどうかはわかりません。余談ですが、パフォーマンスは、数千または数百万の呼び出しのバッチ処理で使用できるほど高速である必要もあります。
2 に答える
あなたができる最善のことは、Javaプロセスがメッセージの各バッチまたはバッチを取得するためにポーリングする別のテーブルにエントリを追加することだと思います。Oracleは、実際にはメッセージ処理用に設計されていません。
いずれにせよ、彼は専門家なので、私はあなたの建築家とこれをどうするかについて話し合います。;)
Oracleシステムがその役割を果たせない場合は、Oracleを使用しないソリューションが必要になる場合があります。
3つのオプションがあります。
1.)UTL_HTTPを使用してPL / SQLでHTTPを呼び出し、app-serverにjavaプロシージャを呼び出させることで、同様の問題を解決しました。これは、OracleデータベースをOracleReportsとインターフェースするために行いました。PL / SQLは、Javaを呼び出すアプリケーションサーバーによって受信されたHTTPリクエストを起動しました。Javaは、通常のJDBCを介してPL/SQLをコールバックできます。
2.)そのJavaプロシージャをロードできない場合がありますが、RMIを使用してそれを呼び出すことができる他のJavaストアドプロシージャを作成できる場合があります。
3.)AQは別の方法です。基本的に、AQを使用してメッセージをキューに入れ、アプリケーションサーバーでJMSを使用してメッセージをデキューして使用できます。
オプション1を試しましたが、オプション3が最速であり、このレイテンシーはあなたが思うほどではありません。また、複数のリクエストを並行して実行することにより、いくつかの並列処理を実行する方法も提供します。