bea ホーム | 製品 | dev2dev | support | askBEA
BEA Logo Tuxedo
 ドキュメントのダウンロード   サイトマップ   用語集 
検索
0

ATMI アプリケーションでの Tuxedo TOP END Domain Gateway の使用

 Previous Next Contents View as PDF  

要求/応答モードのプログラミング

ここでは、次の内容について説明します。

 


要求/応答型メッセージングを TEDG で使用する

TEDG では、BEA Tuxedo システムと BEA TOP END システム間で要求/応答型のメッセージのやり取りがサポートされています。メッセージは、2 つのシステム間で TEDG を介して送信されます。

関連項目

 


BEA Tuxedo クライアントから BEA TOP END サーバへのメッセージの送信

BEA Tuxedo クライアントは、TEDG を介して BEA TOP END サービスにアクセスします。BEA Tuxedo クライアントに対し、TEDG はローカル・サーバの機能を果たします。TEDG は、DMCONFIG ファイルの DM_REMOTE_SERVICES セクションの SERVICE エントリで定義されるサービスを宣言します。クライアント・プログラムは、tpcall() を使用したローカル・サービスとの通信と同じように、tpcall(3c) を使用して要求を発行し、応答を受信します。非同期型の要求と応答は、tpacall(3c) および tpgetrply(3c) 関数によってサポートされます。DMCONFIG ファイルの DM_REMOTE_SERVICES セクションで、TEDG サービスに対する SERVICE エントリに CONV=N が指定されている場合、BEA Tuxedo クライアントはそのサービスと要求/応答モードでのみ通信できます(CONV=N はデフォルト値であり、設定する必要はありません)。

TEDG は要求されているサービス名から DM_REMOTE_SERVICES セクションの SERVICE エントリを検索し、マッピングされる BEA TOP END 要求に対し、対応する BEA TOP END プロダクト、関数、MSR ターゲット、および関数修飾子を決定します。必要に応じて、メッセージが BEA TOP END システムに送信される前に、TEDG でデータ・マーシャリングが行われます。次に、BEA TOP END システムはメッセージを受信した BEA TOP END ノード上のサーバに要求をルーティングします。必要に応じて、BEA TOP END サーバの応答はマーシャリング解除されます。TEDG は要求のステータスをマッピングし、応答を BEA Tuxedo クライアントに送信するためのバッファを準備します。

TEDG と BEA Tuxedo クライアントの動作

クライアントの動作は任意の BEA Tuxedo クライアントで使用する関数と同じ関数でプログラミングされます。

使用する関数

プログラム

tpcall()

同期型の要求および応答

tpacall()

非同期型の要求および応答

tpgetreply()

非同期型の要求および応答


 

これらの関数は通常の方法でプログラミングされます。

BEA Tuxedo クライアントのプログラマは次の情報を把握している必要があります。

BEA TOP END メッセージは 30K バイトに制限されているため、クライアント要求はこのサイズを超えることはできません。FML32 メッセージに対しては、FML インデックスを除いたメッセージにこの制限が適用されます。

TEDG によるクライアント要求のマッピング

クライアント要求にはトランザクションに関与するものと関与しないものがあります。また、応答を要求しないものもあります。次の表は、BEA Tuxedo クライアントのフラグが BEA TOP END 要求にどのようにマッピングされるかを示しています。ほかのすべてのフラグ (TPNOCHANGETPNOBLOCKTPNOTIMETPSIGRSTRT) およびサービス優先順位 (tpsprio() を参照) は、アプリケーションにローカルであるか、または BEA Tuxedo システム内のクライアントと TEDG 間対話にのみ影響します。次のフラグを処理することにより、通常 BEA Tuxedo システムで行われるタスクを TEDG で実行することができます。

表 12-1 BEA Tuxedo クライアントのフラグのマッピング

BEA Tuxedo クライアントのフラグ

操作

TPNOTRAN

TEDG 側では、ATMI ライブラリによって要求がクライアントのトランザクションから除外されるという事実が保持されます。

TPNOREPLY

TP_NO_RESPONSE として BEA TOP END システムに送信されます。BEA TOP END のルーティング・ステータスは BEA Tuxedo クライアントに送信されません。


 

BEA Tuxedo クライアントに返される tperrno 値は標準の値です。TEDG は BEA Tuxedo サーバとして機能するので、一定の条件下では TPESVCERR および TPESVCFAIL を返すこともあります。BEA Tuxedo クライアントではこれらのメッセージを排他的に「アプリケーション定義のエラー」と解釈することはできません。

詳細については、エラー値を参照してください。

注記 tpurcode は TEDG ではサポートされていません。

TEDG は BEA TOP END システムまたはサーバの応答を、tpcall パラメータまたは tpgetrply 関数を介して BEA Tuxedo クライアントがアクセスする応答にマッピングします。BEA TOP END サーバは raw バッファか FML32 バッファの応答を送信します。raw バッファは、管理者が X_OCTET バッファにマッピングするように設定しない限り、通常は TEDG で CARRAY バッファにマッピングされます。さらに管理者は、応答バッファの型を CARRAYX_OCTETFML32 のいずれかに制限することができます。BEA TOP END サービスが互換性のないバッファを返すと、TEDG は TPEOTYPE が設定された tperrno を返します。

TEDG と BEA TOP END サーバの動作

BEA TOP END サーバに対し、TEDG は BEA TOP END クライアントの機能を果たします。つまり、マッピングされた BEA Tuxedo クライアント要求を通常の方法で tp_server_receive(3T) を介して受信します。受信されるバッファは、BEA Tuxedo クライアントから送信されるメッセージに応じて、raw バッファか FML32 バッファのいずれかになります。BEA TOP END サーバは次のいずれかのタイプの要求を受け取ります。

BEA TOP END サーバは、標準の BEA TOP END プログラミング要件に従って両方のタイプの要求を処理します。クライアント要求にはトランザクションに関与するものとしないものがあります。

TEDG による BEA TOP END サーバ送信フラグのマッピング

BEA TOP END サーバは tp_server_send(3T) を使用してクライアント要求に応答します。BEA TOP END アプリケーション、TEDG コンフィギュレーション、および BEA Tuxedo クライアントでのサポートに応じて、応答バッファは raw バッファか FML32 バッファのいずれかです。このバッファは、TEDG によるクライアント要求のマッピングで説明するとおり BEA Tuxedo クライアントのバッファにマッピングされます。

次の表は、BEA TOP END の tp_server_send(3T) フラグがどのようにマッピングされるかを示しています。サーバは、対話をリセットするかまたは応答バッファにアプリケーション定義のフィールド値を設定して応答することにより、エラーを示します。BEA Tuxedo クライアントは適切に応答するようにプログラミングされなければなりません。TEDG への応答で output_format および attach_info パラメータを使用しないでください。これらのパラメータはサポートされていません。

表 12-2 BEA TOP END の「サーバ送信」フラグ

BEA TOP END サーバのフラグ

操作

TP_RESET_DIALOG

TPESVCFAIL が BEA Tuxedo クライアントに返されます。

TP_ROLLBACK_ONLY

TEDG は要求に関連するトランザクションの状態を「アボートのみ」にマークします。

TP_DISSOLVE

応答が BEA Tuxedo クライアントに送信されます。TEDG の対話処理の方法は特殊であるため、このフラグを設定しても、設定しない場合と結果は変わりません。

TP_APPL_CONTEXT

サーバが会話を開始することを示します。この会話モードの要求は、要求/応答処理に対してはエラーになります。TESVCERR が BEA Tuxedo クライアントに返されます。BEA TOP END サーバは TEDG によって切断されます (TP_DISCONNECT)。

TP_FML_BUF

TEDG はユーザ・データを FML32 バッファとして渡します。


 

エラー値

TEDG、BEA TOP END システム、または BEA TOP END サーバに問題がある場合、次のエラー値が BEA Tuxedo クライアントに返されます。1 つの tperrno 値は、複数の原因のうちの 1 つにしかすぎない場合があることに注意してください。

TEDG が宣言するサービスは実際の BEA TOP END サービスの可用性に基づくわけではないので、実際にはそのサービスが利用できない BEA TOP END ノードにメッセージがルーティングされることもあります。その場合、ほかのルーティング決定では要求は正常に行われても、tperrnoTPENOENT が設定されます。サービスを複数のノードで利用できる場合、BEA Tuxedo アプリケーション、BEA TOP END アプリケーション、および TEDG の設計ではこの種の障害が発生する可能性を考慮する必要があります。複数の再起動可能なサーバを定義したアプリケーションであれば、このようなエラーが発生する可能性は低くなります。

表 12-3 BEA Tuxedo クライアントに返されるエラー値

BEA Tuxedo の tperrno 値

原因

TPENOENT

一致するサービスが SERVICE エントリにありません。

TPENOENT

tpcall または tpacall 要求が会話型サービス (CONV=Y) に送信されました。

TPENOENT

BEA TOP END システムから TP_SERVICE が返されました。

エラー詳細 TPED_DOMAINUNREACHABLE が設定された TPESVCERR

要求時の接続が失敗しました。

TPESVCERR

入力バッファ・タイプが、SERVICE エントリの INBUFTYPE フィールドで指定されたタイプと一致していないか、TEDG でサポートされているタイプではありません(FML32CARRAY、および X_OCTETがサポートされています)。

TPESVCERR

(FML バッファの FML インデックスを除いた) 入力バッファが最大メッセージ・サイズの 30K バイトを超えています。

TPESVCERR

サーバが非会話型 SERVICE エントリで TP_APPL_CONTEXT を返しました。

TPESVCFAIL

TP_RESET が BEA TOP END システムによって返されました。

TPEOTYPE

サーバ応答のバッファ・タイプが、SERVICE エントリの OUTBUFTYPE フィールドで指定されるタイプと一致しません。

TPESYSTEM

公開鍵/秘密鍵による暗号化が原因のエラー。

BEA Tuxedo システムが暗号化を要求するように設定され、TEDG は BEA TOP END システムに送信する前にメッセージを解読できなかったため、クライアント入力が拒否されました。

TPESYSTEM

デジタル署名が原因のエラー。

BEA Tuxedo システムがデジタル署名を要求するように設定され、TEDG は BEA TOP END システムに送信する前にメッセージからデジタル署名を削除できなかったため、クライアント入力が拒否されました。


 

関連項目

 


BEA TOP END クライアントから BEA Tuxedo サーバへのメッセージの送信

BEA TOP END クライアントは BEA Tuxedo サービスと TEDG を介して通信します。DMCONFIG ファイルの DM_LOCAL_SERVICES セクションで、TEDG サービスに対する SERVICE エントリに CONV=N が指定されている場合、BEA TOP END クライアントはそのサービスと要求/応答モードでのみ通信できます(CONV=N はデフォルト値であり、設定する必要はありません)。

BEA TOP END クライアントに対し、TEDG は リモート BEA TOP END ノード上の BEA TOP END サーバの機能を果たします。TEDG は BEA TOP END クライアント要求を受け取り、それを対応する BEA Tuxedo 要求にマッピングします。BEA Tuxedo システムは、BEA Tuxedo コンフィギュレーション内の任意の BEA Tuxedo サーバに要求をルーティングします。

BEA TOP END クライアントから BEA Tuxedo サーバに、要求/応答モードのメッセージは次のように送信されます。

TEDG と BEA TOP END クライアントの動作

クライアントの動作は任意の BEA TOP END クライアントで使用する関数と同じ関数でプログラミングされます。

使用する関数

プログラム

tp_client_send

非同期要求の作成

tp_client_signon

非同期要求の作成

tp_client_receive

応答の受信


 

これらの関数を通常の方法で使用し、TEDG を介して BEA Tuxedo サーバにサービス要求を行います。

BEA TOP END クライアントのプログラマは次の情報を把握していることが必要です。

TEDG によるクライアント要求のマッピング

クライアント要求にはトランザクションに関与するものと関与しないものがあります。また、応答を要求しないものもあります。次の表は、BEA TOP END クライアントのフラグがどのようにマッピングされるかを示しています。これらのフラグを処理することにより、通常 BEA TOP END システムで行われるタスクを TEDG で実行することができます。TEDG への要求では、input_format および attach_info パラメータを使用しないでください。これらのパラメータはサポートされていません。

表 12-4 BEA TOP END クライアントのフラグのマッピング

BEA TOP END クライアントのフラグ

操作

TP_DISSOLVE

TEDG が BEA Tuxedo サーバ応答を返した後で対話が無効になります。

TP_NON_TRANSACT

TEDG 側では、CSI ライブラリによって要求がクライアントのトランザクションから除外されるという事実が保持されます。

TP_NO_RESPONSE

TEDG により TPNOREPLY にマッピングされます。BEA TOP END システムと同じように、TEDG は BEA TOP END クライアントへの応答としてルーティング・ステータスを送信します。

TP_FML_BUF

TEDG はユーザ・データを FML32 バッファとして渡します。


 

BEA TOP END クライアントに返されるステータス値および拡張されたステータス値は、標準の値です。エラー値 のマッピングについては、後の節で説明します。

TEDG は BEA Tuxedo システムまたはサーバの応答を、tp_client_receive(3T) 呼び出しを介して BEA TOP END クライアントがアクセスする応答にマッピングします。BEA Tuxedo サーバは CARRAYX_OCTET、または FML32 バッファの応答を送信します。CARRAY または X_OCTET バッファは、TEDG によって raw メッセージにマッピングされます。FML32 バッファは BEA TOP END FML32 メッセージにマッピングされます。さらに管理者は、応答バッファの型を CARRAYX_OCTETFML32 のいずれかに制限することができます。BEA Tuxedo サービスが互換性のないバッファを返すと、TEDG は TP_RESET ステータスを返します。

TEDG と BEA Tuxedo サーバの動作

BEA Tuxedo サーバに対し、TEDG は BEA Tuxedo クライアントの機能を果たします。つまり、マッピングされた BEA TOP END クライアント要求を通常の方法で受信します。受信するバッファのタイプは CARRAYX_OCTET、または FML32 のいずれかであり、クライアントから送信されるメッセージに依存します。BEA Tuxedo サーバは要求を通常の方法で処理します。要求にはトランザクションに関与するものとしないものがあります。「応答なし」の要求もあります。

BEA Tuxedo サーバは tpreturn(3c) を使用してクライアント要求に応答します。TPSUCCESSTP_OK BEA TOP END ステータスにマッピングされます。TPFAILTPEXIT、およびほかのいくつかのエラーは TP_RESET の BEA TOP END ステータスにマッピングされます。応答メッセージは TPSUCCESS でのみサポートされます。

注記 アプリケーション定義の戻りコード rcode は TEDG ではサポートされていません。

BEA TOP END システム、TEDG コンフィギュレーション、および BEA TOP END クライアントでサポートされているバッファ・タイプに応じて、BEA Tuxedo サーバは CARRAYX_OCTET、または FML32 バッファの応答を送信します。応答バッファは BEA TOP END メッセージにマッピングされます。サーバは、TPFAIL エラーを送信するかまたは応答バッファにアプリケーション定義のフィールド値を設定して応答することにより、エラーを示します。BEA TOP END クライアントは、エラーに対処するようにプログラムされなければなりません。

BEA TOP END メッセージは 30K バイトに制限されているため、BEA Tuxedo サーバの応答はこのサイズを超えることはできません。FML32 メッセージに対しては、FML インデックスを除いたメッセージにこの制限が適用されます。

エラー値

TEDG、BEA Tuxedo システム、または BEA Tuxedo サーバに問題がある場合、通常の BEA TOP END エラー・ステータス・メッセージおよびその他のステータス・メッセージが BEA TOP END クライアントに返されます。1 つのエラー・ステータス値は、複数の原因のうちの 1 つにしかすぎない場合があることに注意してください。

TEDG が宣言するサービスは実際の BEA Tuxedo サービスの可用性に基づくわけではないので、実際にはそのサービスが利用できない BEA Tuxedo ノードにメッセージがルーティングされることもあります。その場合、ほかのルーティング決定では要求は正常に行われても、TP_SERVICE エラーが返されます。サービスを複数のノードで利用できる場合、BEA Tuxedo アプリケーション、BEA TOP END アプリケーション、および TEDG の設計ではこの種の障害が発生する可能性を考慮する必要があります。複数の再起動可能なサーバを定義したアプリケーションであれば、このようなエラーが発生する可能性は低くなります。

表 12-5 BEA TOP END クライアントに返されるエラー値

BEA TOP END エラー・ステータス

原因

TP_SERVICETP_EXT_MSR_FAILURE

TEDG SERVICE エントリのルックアップに失敗しました。ターゲットは見つかりませんでした。

TP_SERVICETP_EXT_NO_SUCH_SERV

TEDG SERVICE エントリのルックアップに失敗しました。プロダクトまたは関数は見つかりませんでした (RDOM がアクセスしないエントリは無視します)。

TP_SERVICETP_EXT_NO_SUCH_SERV

BEA Tuxedo システムから TPENOENT が返されました。

TP_RESETTP_EXT_SERVER_APPL

入力バッファ・タイプが、SERVICE エントリの INBUFTYPE フィールドで指定されるタイプと一致しません。

TP_RESETTP_EXT_SERVER_APPL

サーバ応答のバッファ・タイプが、SERVICE エントリの OUTBUFTYPE フィールドで指定されたタイプと一致していないか、TEDG でサポートされているタイプではありません。サポートされているタイプは FML32CARRAY、および X_OCTET です。

TP_RESETTP_EXT_SERVER_APPL

(FML バッファの FML インデックスを除いた) サーバ応答バッファが最大メッセージ・サイズの 30K バイトを超えています。

TP_RESETTP_EXT_SERVER_APPL

TPESVCERRTPESVCFAIL、およびほかのすべての tperrno 値。

TP_RESETTP_EXT_SERVER_APPL

公開鍵/秘密鍵による暗号化が原因のエラー。

BEA Tuxedo システムが暗号化を要求するように設定され、TEDG は BEA TOP END システムに送信する前にメッセージを解読できなかったため、クライアント入力が BEA Tuxedo サーバによって拒否されました。

TP_RESETTP_EXT_SERVER_APPL

デジタル署名が原因のエラー。

BEA Tuxedo システムがデジタル署名を要求するように設定され、TEDG は BEA TOP END システムに送信する前にメッセージからデジタル署名を削除できなかったため、クライアント入力が BEA Tuxedo サーバによって拒否されました。


 

関連項目

 

Back to Top Previous Next
Contact e-docsContact BEAwebmasterprivacy