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定義を示します。