|
SALTでは、外部WebサービスをOracle Tuxedoドメインにインポートできます。外部WebサービスをOracle Tuxedoドメインにインポートするには、最初にWSDLファイルをロードして変換する必要があります。SALT WSDL変換ユーティリティ(wsdlcvt)は、各wsdl:operationをSALTのプロキシ・サービスに変換します。変換されたSALTのプロキシ・サービスを標準的なOracle Tuxedo ATMI関数を使用して直接に呼び出すことができます。
SALTのプロキシ・サービスの呼出しはGWWSサーバーに送信されます。リクエストはOracle Tuxedoタイプ・バッファからSOAPメッセージに変換して、対応する外部Webサービスに送信します。外部Webサービスからのレスポンスは、Oracle Tuxedoタイプ・バッファに変換して、Oracle Tuxedoアプリケーションに返します。GWWSはプロキシ仲介として機能します。
サービスを呼び出す時にエラーが発生する場合、GWWSサーバーはtperrnoによりエラー状態を設定します。このエラー状態はOracle Tuxedoアプリケーションによって取得できます。これにより、SALTのプロキシ・サービスのエラー状態を検出し、処理することができます。
SALTでは、WSDL変換ユーティリティ(wsdlcvt)が提供されています。このユーティリティを使用すると、WSDLファイルで定義されたサービスにアクセスするためにOracle Tuxedo ATMIプログラムを開発できるよう、外部WSDLファイルをOracle Tuxedoの特定の定義ファイルに変換できます。
SALTは、次のルールを使用してWSDLオブジェクト・モデルをOracle Tuxedoモデルに変換します。
| 注意: | 操作名がOracle Tuxedoサービス名の最大長(255文字)を超える場合は、一意の短いOracle Tuxedoサービス名をメタデータ・リポジトリで手動で設定し、<Service> tuxedoRef属性をWSDFファイルで設定する必要があります。 |
| 注: | 詳細は、『SALTリファレンス・ガイド』の「SALT Webサービス定義ファイルのリファレンス」を参照してください。 |
wsdl:operationオブジェクトとその入力/出力メッセージの情報は、Oracle Tuxedoサービス・メタデータ・リポジトリの入力構文に準拠するOracle Tuxedoサービスの定義として変換します。表4-1に、WSDLファイルとOracle Tuxedo定義ファイル間の詳細マッピングとの関係を示します。
次の項では、Oracle Tuxedoアプリケーションから変換されたSALTのプロキシ・サービスの呼出し方法について説明します。
SALTでは、発信サービスの呼出しに対するOracle Tuxedoリクエスト/レスポンスの通信パターンのみがサポートされています。Oracle Tuxedoアプリケーションは、次の通信Oracle Tuxedo ATMIによりSALTのプロキシ・サービスをリクエストすることができます。
tpcall(3c) / tpacall(3c) / tpgetreply(3c) これらの基準的なATMI機能をOracle Tuxedo型付きバッファとともに入力パラメータとして呼び出すことができます。呼出しが返された場合、Oracle Tuxedo型付きバッファも返されます。このバッファは変換された外部Webサービス・インタフェースに準拠します。tpacall/tpgetreplyは、SOAP非同期通信と関連していません。
tpgetcallinfo(3c)/tpsecallinfo(3c) tpgetcallinfo()は、FML32形式のGWWSゲートウェイを使用するアプリケーション・バッファに関連するHTTPヘッダーを取得します。tpsetcallinfo() APIは、その逆(例: リモートHTTP(SOAPなどの)サーバーに送信されるFML32形式のHTTPヘッダーをアプリケーション・バッファに添付)を実行します。
tpforward(3c)Oracle Tuxedoサーバー・アプリケーションはこの関数を使用して、Oracle Tuxedoリクエストを指定されたSALTプロキシ・サービスに転送します。レスポンス・バッファは、従来のネイティブOracle Tuxedoサービスの場合と同様に、クライアント・アプリケーションのレスポンス・キューに直接送信されます。
TMQFORWARDを有効したキュー・ベース通信 Oracle Tuxedoシステム・サーバーTMQFORWARDは、キューに登録されたリクエストを受け付けて、そのキューと同じ名前であるSALTのプロキシ・サービスに送信します。
詳細は、『Oracle Tuxedo ATMI C関数』および『ファイル形式、データ記述、MIBおよびシステム・プロセス・リファレンス』を参照してください。
SALTには、次のOracle Tuxedo通信パターンはサポートされていません。
GWWSを起動してSALTのプロキシ・サービスを通知する場合、このサービスを呼び出すためにOracle Tuxedoアプリケーションを生成できます。SALTのプロキシ・サービスをアクセスするプログラムを開発するには、次の手順に従います。
| 注: | GWWSは、wsdlcvtを使用して生成されたFML32フィールド表ファイルを常に使用します。フィールド名がユニークであることをシステム・レベルで確認する必要があります。2つまたは複数のフィールドは同じフィールド名と関連つけられている場合、フィールド名を変更します。変更したフィールド名に従って、Oracle Tuxedoサービス・メタデータ・リポジトリの定義も変更するようにしてください。 生成されたFML32フィールド表のフィールド・インデックスのベース数は、無効なデフォルト値から有効な値に変更する必要があります。表のすべてのフィールド・インデックスは全体のシステム・レベルでユニークであるかを確認できます。 |
tpcall(1)またはtpacall(1)を使用できます。 外部Webサービスをアクセスする時にGWWSサーバーにエラーが発生した場合、Oracle Tuxedoアプリケーションがエラーを診断できるようにtperrnoを設定します。表4-2に、使用可能な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>要素のエラー・バッファ内のフィールドへの変換を制御します。表4-3には、アウトバウンドSOAPフォルトのerrbuf定義を示します。
『ファイル形式、データ記述、MIBおよびシステム・プロセス・リファレンス』
|