9.14. Web サービストランスレーター
タイプ名 soap または ws によって認識される Web Services Translator は、web/ SOAP サービスを呼び出すためのストアドプロシージャーを公開します。 このトランスレーターの結果は通常、CSV または XML 形式のデータを使用する TEXTTABLE または XMLTABLE テーブル関数で使用されます。
実行プロパティー
名前 | 説明 | 使用時 | デフォルト |
---|---|---|---|
DefaultBinding | 指定がない場合は使用すべきバインディングです。HTTP、SOAP11、または SOAP12 のいずれかを使用できます。 | invoke* | SOAP12 |
DefaultServiceMode | デフォルトのサービスモード。SOAP の場合、MESSAGE モードは、リクエストに SOAP ボディーのコンテンツだけでなく、SOAP エンベロープ全体が含まれることを示します。MESSAGE または PAYLOAD のいずれかを使用できます。 | invoke* または WSDL コール | PAYLOAD |
XMLParamName | リクエストドキュメントがクエリー文字列の一部であることを示すために、HTTP バインディング(通常は GET メソッド)で使用されます。 | invoke* | null - 未使用 |
翻訳者に適切なバインディング値を設定することは、呼び出し元が明示的な値を渡す必要がなくなるため、推奨されています。サービスが実際には SOAP11 を使用しますが、バインディングが SOAP12 を使用した場合は、実行に失敗します。
インポーターの設定はありませんが、VDB のメタデータを提供できます。コネクションが特定の WSDL を参照するよう設定されている場合、トランスレーターは指定の service および port ですべての SOAP 操作をインポートします。
インポーターのプロパティー
インポータープロパティーを指定する場合は、「importer」のプレフィックスを指定する必要があります。例: importer.tableTypes
名前 | 説明 | デフォルト |
---|---|---|
importWSDL | resource-adapter に設定された WSDL URL からメタデータをインポートします。 | true |
用途
トランスレーターは、Web サービスへのアクセスに関する低レベルの手順を公開します。
プロシージャーの実行
invoke は、複数のバインディングまたはプロトコルモード(HTTP、SOAP11、SOAP12 など)を許可します。
Procedure invoke(binding in STRING, action in STRING, request in XML, endpoint in STRING, stream in BOOLEAN) returns XML
Procedure invoke(binding in STRING, action in STRING, request in XML, endpoint in STRING, stream in BOOLEAN) returns XML
バインディングは、null(デフォルト)の HTTP、SOAP11、または SOAP12 のいずれかにすることができます。SOAP バインディングのアクション は、SOAPAction の値を示します。HTTP バインディングを持つアクションは、デフォルトで POST に設定されている HTTP メソッド(GET、POST など)を示します。
バインディングまたはエンドポイントの null 値はデフォルト値を使用します。デフォルトのエンドポイントはソース設定に指定されます。エンドポイント URL は絶対または相対できます。相対的の場合は、デフォルトのエンドポイントと組み合わされます。
複数のパラメーターに値を含める必要がないため、named パラメーター構文で呼び出しの手順を呼び出すことがより明確になります。
call invoke(binding=>'HTTP', action=>'GET')
call invoke(binding=>'HTTP', action=>'GET')
リクエスト XML は有効な XML ドキュメントまたはルート要素である必要があります。
InvokeHTTP 手順
invokeHttp
は HTTP(S)呼び出しのバイトコンテンツを返すことができます。
Procedure invokeHttp(action in STRING, request in OBJECT, endpoint in STRING, stream in BOOLEAN, contentType out STRING, headers in CLOB) returns BLOB
Procedure invokeHttp(action in STRING, request in OBJECT, endpoint in STRING, stream in BOOLEAN, contentType out STRING, headers in CLOB) returns BLOB
action は、デフォルトで POST を指定する HTTP メソッド(GET、POST など)を示します。
エンドポイントの null 値はデフォルト値を使用します。デフォルトのエンドポイントはソース設定に指定されます。エンドポイント URL は絶対または相対できます。相対的の場合は、デフォルトのエンドポイントと組み合わされます。
複数のパラメーターに値を含める必要はないため、多くの場合、名前付きパラメーター構文で invokeHttp の手順を呼び出すことがより明確です。
call invokeHttp(action=>'GET')
call invokeHttp(action=>'GET')
リクエストは SQLXML、STRING、BLOB、または CLOB のいずれかです。リクエストは、バイト形式で POST ペイロードとして送信されます。STRING/CLOB 値の場合、デフォルトは UTF-8 エンコーディングになります。バイトエンコーディングを制御するには、to_bytes 関数を参照してください。
オプションの headers パラメーターを使用して、要求ヘッダーの値を JSON 値として指定できます。JSON 値は、プリミティブまたはプリミティブ値のリストを持つ JSON オブジェクトである必要があります。
call invokeHttp(... headers=>jsonObject('application/json' as "Content-Type", jsonArray('gzip', 'deflate') as "Accept-Encoding"))
call invokeHttp(... headers=>jsonObject('application/json' as "Content-Type", jsonArray('gzip', 'deflate') as "Accept-Encoding"))
headers パラメーター設定の推奨事項:
-
HTTP POST/PUT メソッドが呼び出される場合は、
Content-Type
が必要になる場合があります。 - メディア タイプを返す場合は、accept が必要です。
WSDL ベースの手順
上記の手順では、エンドポイントを提供して Web サービスメソッドを実行する匿名の方法を提供します。このメカニズムを使用すると、WSDL で定義されたエンドポイントを別のエンドポイントで変更できます。しかし、WSDL にアクセスできる場合は、web-service resource-adapter の接続設定で WSDL URL を設定できます。デフォルトのネイティブメタデータインポートを使用している場合は、Web サービスのソースモデルに手順が表示されます。
Web サービストランスレーターでは、ネイティブクエリーや直接クエリーの実行手順は使用できません。
ストリーミングに関する考慮事項
stream パラメーターが true
に設定されている場合、生成される LOB 値は 1 回のみ使用できます。ストリームが null
または false
の場合、エンジンは結果のコピーを保存して繰り返し使用する必要がある場合があります。キャストや XMLPARSE
など、一部の操作として使用すると、ストリームが消費される結果の検証が実行される可能性があります。