10

私たちのアプリケーションは、最近多くのWebサービスとインターフェースを取っています。誰かがUTL_HTTPを使用して数年前に作成した独自のパッケージがあり、通常は機能しますが、特定のシステムで機能するには、SOAPエンベロープのハードコーディングが必要です。もっと一般的なものにしたいと思いますが、対処しなければならないシナリオの数を知る経験が不足しています。バリエーションは、宣言する必要のある名前空間と要素の形式にあります。いくつかのパラメータを使用した単純な呼び出しと、エンコードされた文字列で大量のデータを渡す呼び出しの両方を処理する必要があります。

10gにはUTL_DBWSがあることは知っていますが、オンラインのユースケースはそれほど多くありません。一般的な使用に十分な安定性と柔軟性がありますか?ドキュメンテーション

4

4 に答える 4

6

UTL_HTTPシンプルで動作するものを使用しました。独自のパッケージで課題に直面した場合は、ネット上のUTL_HTTPに関する多くのラッパーパッケージの1つで解決策を見つけることができます(Googleは「pl / sqlからWebサービスを消費する」ため、 http://wwwなどにアクセスできます。 oracle-base.com/articles/9i/ConsumingWebServices9i.php

誰も使用していない理由はUTL_DBWS、デフォルトでインストールされているデータベースでは機能しないためです。大量のJavaクラスをデータベースにロードする必要がありますが、標準の命令には欠陥があるようです。プロセスはJavaエラーを左右に吐き出し、最終的に失敗します。このアプローチを機能させるために、パッケージの依存関係を追跡するために時間を割いて喜んでいる人はほとんどいないようです。

于 2008-09-15T23:38:17.513 に答える
2

私はこの課題に直面し、Sten が Oracle-Base で提案している「SOAP API」パッケージを見つけてインストールしました。UTL_HTTP の上にいくつかの優れたエンベロープ作成機能を提供します。

ただし、質問に関連するいくつかの制限がありました。SOAP_API は、すべてのリクエストが単純な XML、つまり 1 つのレイヤ タグ階層のみであると想定しています。

SOAP_API パッケージを拡張して、クライアント コードが追加のタグを任意に挿入できるようにしました。したがって、 などのサブレベルを挿入し、リクエストの作成を続行し、終了タグを挿入することを忘れないでください。

名前空間の問題は、プロジェクトにとって大きな問題でした。異なるレベルの XML には、異なる名前空間がありました。

私が使用した優れたデバッグ ツールは、Pocket Soap の TCP Trace です。www.pocketsoap.com/tcptrace/ プロキシのように設定し、クライアント コードとサーバー コードの間の HTTP 要求および応答オブジェクトを監視します。

そうは言っても、データベースにSOAPクライアントがあるのは本当に好きです.すべてのデータと既存のPLSQLコードに完全にアクセスでき、カーソルを簡単にループし、必要に応じてSOAPを介して外部アプリを呼び出すことができます. 多くのカスタム Java または .NET コードを使用して中間層をデプロイするよりも、はるかに迅速かつ簡単でした。私の強化された SOAP API コードをご覧になりたい場合はお知らせください。

于 2009-01-24T17:05:17.363 に答える
1

また、あなたが説明したのと同様の方法で UTL_HTTP を使用しました。私は UTL_DBWS を直接使用した経験がないので、収集できる情報や経験があればフォローアップしていただければ幸いです。

@kogus、いいえ、多くのアプリケーションにとって非常に優れた設計です。PL/SQL は、多くの大規模なアプリケーションで使用されてきた本格的なプログラミング言語です。

于 2008-09-02T17:01:01.420 に答える
-2

この古い投稿をチェックしてください。その投稿の一番の答えに同意する必要があります。これが適切な設計になるシナリオを想像するのは困難です。

データベース内のテーブルと対話するサービスまたはスタンドアロン アプリケーションを作成できないでしょうか。次に、そのテーブルのトリガーとして必要なものを何でも実装できます。

于 2008-09-02T16:26:37.103 に答える