プログラミング ガイド

     前  次    新しいウィンドウで目次を開く     
ここから内容

Web サービスの Tuxedo ATMI プログラミング

このトピックには、以下のトピックが含まれています。

 


概要

Oracle SALT では、外部 Web サービスを Tuxedo ドメインにインポートできます。外部 Web サービスを Tuxedo ドメインにインポートするには、最初に WSDL ファイルをロードして変換する必要があります。Oracle SALT WSDL 変換ユーティリティ (wsdlcvt) は、各 wsdl:operation を Oracle SALT のプロキシ サービスに変換します。変換された SALT のプロキシ サービスを標準的な Tuxedo ATMI 関数を使用して直接に呼び出すことができます。

Oracle SALT のプロキシ サービスの呼び出しは GWWS サーバに送信します。リクエストは Tuxedo タイプ バッファから SOAP メッセージに変換して、対応する外部 Web サービスに送信します。外部 Web サービスからの応答は、Tuxedo タイプ バッファに変換して、Tuxedo アプリケーションに返します。GWWS はプロキシ仲介として機能します。

サービスを呼び出す時にエラーが発生する場合、GWWS サーバは tperrno によりエラー状態を設定します。このエラー状態は Tuxedo アプリケーションによって取得できます。これにより、SALT のプロキシ サービスのエラー状態を検出し、処理することができます。

 


WSDL モデルの Tuxedo モデルへの変換

Oracle SALT では、WSDL 変換ユーティリティ (wsdlcvt) が提供されています。このユーティリティを使用すると、WSDL ファイルで定義されたサービスにアクセスするために Tuxedo ATMI プログラムを開発できるよう、外部 WSDL ファイルを Tuxedo の特定の定義ファイルに変換できます。

WSDL-to-Tuxedo オブジェクトのマッピング

Oracle SALT は、以下のルールを使用して WSDL オブジェクト モデルを Tuxedo モデルに変換します。

表 4-1 に、WSDL ファイルと Tuxedo 定義ファイル間の詳細マッピングとの関係を示します。

表 4-1 WSDL モデル/Tuxedo モデルのマッピング ルール
WSDL オブジェクト
Tuxedo/SALT 定義ファイル
Tuxedo/SALT 定義オブジェクト
/wsdl:binding
SALT Web サービスの定義ファイル (WSDF)
/WSBinding
/wsdl:portType
/WSBinding/Servicegroup
/wsdl:binding/soap:binding
/WSBinding/SOAP
/wsdl:portType/operation
メタデータ入力ファイル (MIF)
/WSBinding/service
/wsdl:types/xsd:schema
FML32 フィールド定義テーブル
フィールド名のタイプ

 


SALT のプロキシ サービスの呼び出し

以下の節では、Tuxedo アプリケーションから変換された SALT のプロキシ サービスの呼び出し方法について説明します。

Oracle SALT でサポートされている通信パターン

Oracle SALT では、発信サービスの呼び出しに対する Tuxedo 要求/応答の通信パターンのみがサポートされています。Tuxedo アプリケーションは、以下の通信 Tuxedo ATMI により SALT のプロキシ サービスを要求することができます。

Oracle SALT には、以下の Tuxedo 通信パターンはサポートされていません。

Tuxedo 発信呼び出しのプログラミング : 主な手順

GWWS を起動して Oracle SALT のプロキシ サービスを公開する場合、このサービスを呼び出すために Tuxedo アプリケーションを生成できます。SALT のプロキシ サービスをアクセスするプログラムを開発するには、次の手順に従います。

GWWS から戻ったエラー コードの管理

外部 Web サービスをアクセスする時に GWWS サーバにエラーが発生した場合、Tuxedo アプリケーションがエラーを診断できるように tperrno を設定します。表 4-2 に、使用可能な Oracle SALT のプロキシ サービス tperrno 値を示します。

表 4-2 GWWS/Tuxedo フレームワークから返されたエラー コード
TPERRNO
考えられるエラーの原因
TPENOENT
要求された SALT のプロキシ サービスは GWWS により公開されていない。
TPESVCERR
外部 Web サービスのアプリケーションから返された HTTP 応答メッセージを無効である。
外部 Web サービスのアプリケーションから返された SOAP 応答メッセージは非整形式である。
TPEPERM
認証に失敗する。
TPEITYPE
Tuxedo リクエスト タイプ バッファを SOAP リクエスト メッセージの XML ペイロードに変換する時にメッセージの変換に失敗する。
TPEOTYPE
SOAP リクエスト メッセージの XML ペイロードを Tuxedo リクエスト タイプ バッファに変換する時にメッセージの変換に失敗する。
TPEOS
システム リソースに制限があるため、リクエストが拒否される。
TPETIME
タイムアウトが発生される。このタイムアウトは BBL BLOCKTIME または SALT の発信呼び出しタイムアウトである。
TPSVCFAIL
外部 Web サービスは SOAP エラー メッセージを返す。
TPESYSTEM
GWWS の内部エラー。詳細については、ULOG を参照する。

Tuxedo アプリケーションでエラー メッセージの処理

リストされたすべてのルールは、WSDL 入力/出力メッセージを Tuxedo メタデータ inbuf/outbuf の定義にマップするために使用されます。いくつかのルールを変更すると、WSDL ファイルのデフォルト メッセージを Tuxedo メタデータ errbuf にマップすることができます。

エラー マッピングのルール

メタデータ errbuf を SOAP エラー メッセージにマップするために、Tux モードおよび XSD モードという 2 つのモードがあります。

XSD モードの各サービス (servicemode=webservice) については、メタデータで type=FML32 の errbuf が含まれています。

errbuf は FML32 バッファです。これは対応に表れる SOAP : エラー メッセージの記述で、SOAP 1.1 および 1.2 に異なります。従って、errbuf 定義の内容は SOAP バージョンと WSDL エラー メッセージの両方により決定します。

パラメータの詳細/詳細 (1.1/1.2) は FML32 フィールドで、各フィールドは 1 つの wsdl : エラー メッセージ (wsdl:fault は存在する場合) で定義された wsdl:part を示します。各部は、FML32 フィールド内に param (フィールド) として定義されます。マッピング ルールは入力/出力バッファと同じです。しかし、param の requiredcount は 0 であるため、SOAP エラー メッセージの一部が表示されない可能性があります。

soap:fault message の他の要素は、常に errbuf 内のフィールドとして定義します。要素の MUST または OPTIONAL に応じて、requiredcount は 1 または 0 です。

メタデータ内の各部定義は、SOAP エラー メッセージ内の <detail> をエラー バッファ内のフィールドに変換する方法を示します。


  ページの先頭       前  次