![]() 前へ |
![]() 次へ |
Webサービスの本質はファンクションであるため、マッピング内で使用できます。これにより、Warehouse Builderで既存のWebサービスに存在する機能を活用できるようになります。
Warehouse Builderでは、Oracle DatabaseでサポートされているWebサービスを活用して、マッピング(PL/SQLパッケージ)内でWebサービスを使用できます。
Webサービスをソースまたはターゲットとして使用するマッピングを作成するには、次の方法のいずれかを使用します。
UTL_HTTPパッケージを使用します。
Webサービスに対するSQL接続にJPublisherを使用します
詳細は、「JPublisherによってマッピングでWebサービスを使用するための手順」を参照してください。
Webサービスの使用を可能にするUTL_DBWSパッケージを使用します。
Oracle Databaseのバージョンによっては、これらのタスクを実行するためにDBWSユーティリティのダウンロードおよびインストールが必要となることがあります。
JPublisherによってマッピングでWebサービスを使用するための手順
JPublisherでは、オブジェクト・タイプ(Oracleオブジェクト、VARRAY、ネストした表、REFまたはオブジェクト・タイプ)がJavaクラスに変換され、オブジェクトの属性ごとにアクセッサ・メソッドが生成されます。JPublisherでは、オブジェクト・タイプとJavaクラス間、オブジェクト属性タイプとそれに対応するJavaタイプ間でマッピングが作成されます。
PL/SQLパッケージの場合には、パッケージ内のサブプログラムごとにラッパー・メソッドを含むクラスがJPublisherで作成されます。サブプログラムごとに生成されたラッパー・メソッドは、元のメソッドが静的であっても、オブジェクト・メソッドと同様に必ずインスタンス・メソッドとなります。JPublisherで作成されるラッパー・メソッドには、PL/SQLストアド・プロシージャをJavaコードから起動したり、Javaストアド・プロシージャをクライアントJavaプログラムから起動するための便利な方法が備わっています。
JPublisherを使用して、WSDLファイルのテーブル・ファンクション・プロキシを生成し、PL/SQLラッパーとプロキシ・コードを発行します。
たとえば、次のコマンドは、http://99.22.32.21:9762/services/test_ws?wsdlというURLで使用可能なWebサービスのプロキシを生成します。
jpub -user wh_tgt/wh_tgt_pswd -sysuser system/oracle -dir=test_ws
-proxywsdl=http://90.22.32.21:9762/services/test_ws?wsdl
ここで、wh_tgtおよびwh_tgt_pswdは、マッピングが配布されているWarehouse Builderの場所のデータベース資格証明です。
JavaクラスとPL/SQLラッパーがJPublisherで生成され、指定のスキーマ(WH_TGT)にロードされます。
(オプション)WebサービスをコールするPL/SQLコードを定義します。
この手順によって、テーブル・ファンクションへのコールアウトがOracle Databaseレベルで動作することが、Warehouse Builderを介さずに確認されます。
次の例では、パッケージmy_packに含まれるmy_funcというファンクションに対するコールアウトが動作することを確認します。
SELECT * FROM TABLE(WH_TGT.MY_PROC.MY_FUNC)
テーブル・ファンクション・プロキシを生成したWebサービスのメタデータを、メタデータのインポート・ウィザードによってWarehouse Builderにインポートします。
メタデータには、ユーザー定義のタイプとPL/SQLパッケージがあります。
Webサービスを使用するWarehouse Builderマッピングを開き、Webサービスをコールする「テーブル・ファンクション」演算子を追加します。次を実行します。
「テーブル・ファンクション」演算子の「テーブル・ファンクション名」プロパティで、マッピングに追加する、(手順1で)生成されたテーブル・ファンクションの名前を入力します。
「テーブル・ファンクション」演算子のINGRP1グループで、「入力パラメータ・タイプ」フィールドを使用して、テーブル・ファンクションで受け入れる入力タイプを選択します。
Webサービスへの入力を表すソース行を定義します。
Webサービス入力を表す演算子を、「テーブル・ファンクション」演算子の入出力グループにマップします。
マッピング内のテーブルで、Webサービスの出力をキャプチャします。
「テーブル・ファンクション」演算子から出力としてコレクション・タイプが戻されるため、必要に応じて、「オブジェクトの拡張」演算子を使用して、個々の出力行をターゲット表にマップします。
(オプション)企業のファイアウォールの背後で実行する場合など、Webプロキシを設定する必要がある場合は、プロシージャINITIALIZE_PROXYを使用する「マッピング前プロセス」演算子を使用してHTTPプロキシを構成します。
マッピングを生成し、実行します。