|
Oracle SALTでは、外部WebサービスをOracle Tuxedoドメインにインポートできます。外部WebサービスをOracle Tuxedoドメインにインポートするには、最初にWSDLファイルをロードして変換する必要があります。Oracle SALT WSDL変換ユーティリティ(wsdlcvt)は、各wsdl:operationをOracle SALTのプロキシ・サービスに変換します。変換されたSALTのプロキシ・サービスを標準的なOracle Tuxedo ATMI関数を使用して直接に呼び出すことができます。
Oracle SALTのプロキシ・サービスの呼出しはGWWSサーバーに送信します。リクエストはOracle Tuxedoタイプ・バッファからSOAPメッセージに変換して、対応する外部Webサービスに送信します。外部Webサービスからのレスポンスは、Oracle Tuxedoタイプ・バッファに変換して、Oracle Tuxedoアプリケーションに返します。GWWSはプロキシ仲介として機能します。
サービスを呼び出す時にエラーが発生する場合、GWWSサーバーはtperrnoによりエラー・ステータスを設定します。このエラー・ステータスはOracle Tuxedoアプリケーションによって取得できます。これにより、SALTのプロキシ・サービスのエラー・ステータスを検出し、処理することができます。
Oracle SALTでは、WSDL変換ユーティリティ(wsdlcvt)が提供されています。このユーティリティを使用すると、WSDLファイルで定義されたサービスにアクセスするためにOracle Tuxedo ATMIプログラムを開発できるよう、外部WSDLファイルをOracle Tuxedoの特定の定義ファイルに変換できます。
Oracle SALTは、次のルールを使用してWSDLオブジェクト・モデルをOracle Tuxedoモデルに変換します。
| 注: | 操作名がOracle Tuxedoサービス名の最大長(15文字)を超える場合は、一意の短いOracle Tuxedoサービス名をメタデータ・リポジトリで手動で設定し、<Service> tuxedoRef属性をWSDFファイルで設定する必要があります。 |
| 注: | 詳細は、Oracle SALTリファレンス・ガイドの 「Oracle SALT Webサービス定義ファイルのリファレンス」を参照してください。 |
wsdl:operationオブジェクトとその入力/出力メッセージの情報は、Oracle Tuxedoサービス・メタデータ・リポジトリの入力構文に準拠するOracle Tuxedoサービスの定義として変換します。表5-1に、WSDLファイルとOracle Tuxedo定義ファイル間の詳細マッピングとの関係を示します。
次の項では、Oracle Tuxedoアプリケーションから変換されたSALTのプロキシ・サービスの呼出し方法について説明します。
Oracle SALTでは、発信サービスの呼出しに対するOracle Tuxedoリクエスト/レスポンスの通信パターンのみがサポートされています。Oracle Tuxedoアプリケーションは、次の通信Oracle Tuxedo ATMIによりSALTのプロキシ・サービスをリクエストすることができます。
tpcall(1) / tpacall(1) / tpgetreply(1) これらの基本ATMI関数は、Oracle Tuxedo型付きバッファで入力パラメータとして呼び出すことができます。呼出しが返されるときはOracle Tuxedo型付きバッファも含まれます。これらのバッファはすべて、変換された外部Webサービス・インタフェースに準拠します。tpacall/tpgetreplyはSOAP非同期通信に関連していません。
tpforward(1)Oracle Tuxedoサーバー・アプリケーションはこの関数を使用して、Oracle Tuxedoリクエストを指定されたSALTプロキシ・サービスに転送します。レスポンス・バッファは、従来のネイティブOracle Tuxedoサービスの場合と同様に、クライアント・アプリケーションのレスポンス・キューに直接送信されます。
TMQFORWARDを有効したキュー・ベース通信 Oracle Tuxedoシステム・サーバーTMQFORWARDは、キューに登録されたリクエストを受け付けて、キューと同じ名前であるOracle SALTのプロキシ・サービスに送信します。
Oracle SALTには、次のOracle Tuxedo通信パターンはサポートされていません。
GWWSを起動してOracle SALTのプロキシ・サービスを公開する場合、このサービスを呼び出すためにOracle Tuxedoアプリケーションを生成できます。SALTのプロキシ・サービスをアクセスするプログラムを開発するには、次の手順に従います。
| 注: | GWWSは、wsdlcvtを使用して生成されたFML32フィールド表ファイルを常に使用します。フィールド名がユニークであることをシステム・レベルで確認する必要があります。2つまたは複数のフィールドは同じフィールド名と関連付けられている場合、フィールド名を変更します。変更したフィールド名に従って、Oracle Tuxedoサービス・メタデータ・リポジトリの定義も変更するようにしてください。 生成されたFML32フィールド表のフィールド索引のベース数は、無効なデフォルト値から有効な値に変更する必要があります。表のすべてのフィールド索引は全体のシステム・レベルでユニークであるかを確認できます。 |
tpcall(1)またはtpacall(1)を使用できます。 外部Webサービスをアクセスする時にGWWSサーバーにエラーが発生した場合、Oracle Tuxedoアプリケーションがエラーを診断できるようにtperrnoを設定します。表5-2に、使用可能なOracle SALTのプロキシ・サービスtperrno値を示します。
リストされたすべてのルールは、WSDL入力/出力メッセージをOracle Tuxedoメタデータinbuf/outbufの定義にマップするために使用されます。いくつかのルールを変更すると、WSDLファイルのデフォルト・メッセージをOracle Tuxedoメタデータerrbufにマップすることができます。
メタデータerrbufをSOAPフォルト・メッセージにマップするために、TuxモードおよびXSDモードという2つのモードがあります。
<detail>要素で、エラー・バッファをXMLペイロードに変換します。servicemode=webservice)については、メタデータでtype=FML32のerrbuf が常に含まれています。errbufはFML32バッファです。これは、対応(SOAP 1.1と1.2で異なる)に表示されるSOAP:Faultメッセージの完全な記述です。errbuf 定義の内容は、SOAPバージョンとWSDLフォルト・メッセージの両方によって決定します。wsdl:faultメッセージ(wsdl:faultが存在する場合)で定義されたwsdl:partを表します。各部分は、FML32フィールド内にparam(フィールド)として定義されます。マッピング・ルールは、入力/出力バッファの場合と同じです。相違点は、各paramのrequiredcountは0であるため、SOAPフォルト・メッセージにこれが表示されない可能性があることです。soap:faultメッセージに表示されるその他の要素は、常にerrbuf内のフィールドとして定義されます。要素が必須か省略可能かどうかに応じて、requiredcountは1または0になります。<detail>要素のエラー・バッファ内のフィールドへの変換を制御します。表5-3には、アウトバウンドSOAPフォルトのerrbuf定義を示します。
|