BEA Logo BEA Tuxedo Release 8.0

  BEA ホーム  |  イベント  |  ソリューション  |  パートナ  |  製品  |  サービス  |  ダウンロード  |  ディベロッパ・センタ  |  WebSUPPORT

 

   Tuxedo ホーム   |   ATMI アプリケーションでの BEA Tuxedo TOP END Domain Gateway の使用   |   先頭へ   |   前へ   |   次へ   |   目次

 


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

BEA Tuxedo クライアントは TEDG を介して BEA TOP END サービスと会話型通信を行います。BEA Tuxedo クライアントに対し、TEDG はローカル会話型サーバの機能を果たします。TEDG は、DMCONFIG ファイルの DM_REMOTE_SERVICES セクションの SERVICE エントリで定義されるサービスを宣言します。BEA TOP END サーバが擬似会話をサポートしている場合、BEA Tuxedo の管理者は DMCONFIG ファイルの DM_REMOTE_SERVICES セクションの SERVICE エントリに CONV=Y を指定して、そのサーバで提供されるサービスを会話型サービスに設定する必要があります。TEDG サービスに対する SERVICE エントリに CONV=Y が指定されている場合、BEA Tuxedo クライアントはそのサービスと会話モードでのみ通信できます。BEA Tuxedo クライアントは、tpconnect(3c)tpsend(3c)tprecv(3c)、および tpdiscon(3c) 関数を使用します。

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 クライアントに送信するためのバッファを準備します。

BEA TOP END サーバは、アプリケーション・コンテキストを使用して、BEA Tuxedo クライアントとの会話を継続するかどうかを決定します。アプリケーション・コンテキストが存在する限り、会話は保持されます。アプリケーション・コンテキストが存在しなければ、会話は終了します。

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

BEA Tuxedo クライアントのプログラマは、tpconnect(3c) を使用して BEA TOP END サーバとの会話を確立します。サーバは会話型応答を行うか、または 1 つの応答を送信して会話を終了します。通常の BEA Tuxedo の会話に参加するクライアントと異なり、BEA TOP END システムにアクセスするクライアントは、各メッセージに対する応答を受け付けなければなりません。クライアントが各要求の応答を受け取るよう準備するには、tpconnect() 呼び出しおよび以降の tpsend(3c) 呼び出しで TPRECVONLY フラグを設定します。このフラグを設定すると、クライアントはメッセージを受信してから次のメッセージを送信します。BEA TOP END システムから応答を受信するには、BEA Tuxedo の tprecv(3c) 関数を使用します。TPRECVONLY を指定しないか、または TPSENDONLY を設定すると、TEDG は要求を拒否してエラーを記録し、TPEV_SVCERR イベントをクライアントに返します。tpconnect() および tpsend() 呼び出しは、データがあるかどうかに関係なく、同等の BEA TOP END tp_client_send(3T) 呼び出しにマッピングされます。データがない場合は、サーバは長さゼロのメッセージを受信します。

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

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

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

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

次の表は、tpconnect(3c) および tpsend(3c) のフラグがどのようにマッピングされるかを示しています。

BEA Tuxedo クライアントのフラグのマッピング

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

動作

TPNOTRAN

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

TPSENDONLY

TEDG は TPEV_SVCERR を BEA Tuxedo クライアントに返します。

TPRECVONLY

このフラグには on を設定しなければなりません。設定しないと、TEDG は TPEV_SVCERR イベントを BEA Tuxedo クライアントに返します。


 

BEA Tuxedo クライアントは、tprecv(3c) を会話における通常の方法で呼び出して、サーバの応答および TEDG エラーを受信します。TEDG は、会話のステータスおよびエラーを、tprecv() で返される tperrno 値またはイベントにマッピングします。

BEA TOP END サーバは raw バッファか FML32 バッファの応答を送信します。raw バッファは、管理者が X_OCTET バッファにマッピングするように設定しない限り、通常は TEDG で CARRAY バッファにマッピングされます。管理者は応答バッファのタイプを CARRAYX_OCTET、または FML32のいずれかに制限できます。BEA TOP END サービスが互換性のないバッファを返すと、TEDG は TPEOTYPE が設定された tperrno を返します。

TP_APPL_CONTEXT がサーバ応答で設定されない場合、TEDG は TPSUCCESS フラグを設定して tpreturn(3c) と同等の関数を呼び出し、BEA Tuxedo クライアントとの会話を終了します。クライアントは会話の終了を、サーバから返されたデータを伴う TPEV_SVCSUCC イベントと解釈します。TP_APPL_CONTEXT がサーバ応答で設定されると、TEDG は TPRECVONLY フラグを設定して tpsend() の同等関数を呼び出し、BEA Tuxedo クライアントとの会話を保持します。クライアントはこの tpsend() 呼び出しを、サーバから返されたデータを伴う TPEV_SENDONLY イベントと解釈します。

サーバが TP_RESET ステータスとしてエラーを返すと、TEDG は TPFAIL フラグを設定して tpreturn() と同等の関数を呼び出し、BEA Tuxedo クライアントとの会話を終了します。クライアントはこの呼び出しを TPEV_SVCFAIL イベントと解釈します。ほかのエラーは TPEV_SVCERR イベントとして返されます。

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

TPEV_SVCERR または TPEV_SVCFAIL エラーが返されると、会話は終了します。サーバがコンテキストを保持している場合、TEDG は BEA TOP END の対話を切断します (TP_DISCONNECT)。

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 Tuxedo クライアントと継続している会話の一部 (TP_APPL_CONTEXT フラグ) として解釈します。BEA TOP END サーバは、標準の BEA TOP END プログラミング要件に従って両方のタイプの要求を処理します。

マップされる BEA Tuxedo クライアント要求に対し、function_qualifier フィールドを使用してマルチステップ会話のステップを示すことはできません。その情報はクライアント・メッセージに埋め込む必要があります。

クライアント要求にはトランザクションに関与するものとしないものがあります。

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

BEA TOP END サーバは通常の方法で、tp_server_send(3T) を使ってクライアント要求に応答します。BEA TOP END システム、TEDG コンフィギュレーション、および BEA Tuxedo クライアントでのサポートに応じて、応答バッファは raw バッファか FML32 バッファのいずれかになります。このバッファは BEA Tuxedo クライアントのバッファにマッピングされます。サーバは TP_APPL_CONTEXT フラグを設定せずに tp_server_send(3T) 応答を送信して、会話を終了します。

サーバがコンテキストを保持する場合、そのサーバで TP_APPL_CONTEXT フラグが tp_server_send(3T) 応答に設定されます。このフラグは、会話を継続して対話をコンテキスト・モードで保持するよう TEDG に指示します。BEA TOP END システムは、それ以降の対話で TEDG から送られる会話メッセージを同じサーバにルーティングします。サーバは、対話をリセットするかまたは応答バッファにアプリケーション定義のフィールド値を設定して応答することにより、エラーを示します。BEA Tuxedo クライアントは、エラーに対処するようにプログラムされなければなりません。

次の表は、BEA TOP END tp_server_send(3T) フラグがどのようにマッピングされるかを示しています。TEDG への応答で output_format および attach_info パラメータを使用しないでください。これらのパラメータはサポートされていません。

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

BEA TOP END サーバのフラグ

動作

TP_APPL_CONTEXT 設定

応答データは、方向を切り替えるための TPRECVONLY を設定して tpsend(3c) によりクライアントに渡されます。

TP_APPL_CONTEXT 非設定

応答データは、TPSUCCESS フラグを設定して tpreturn(3c) を呼び出すことによりクライアントに渡され、会話は終了します。

TP_RESET_DIALOG

TPFAIL フラグを設定して tpreturn(3c) が呼び出され、会話は終了します。

TP_ROLLBACK_ONLY

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

TP_DISSOLVE

応答データはクライアントに渡され、TPSUCCESS フラグを設定して tpreturn(3c) を呼び出すことにより会話は終了します。

TP_FML_BUF

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


 

TPEV_SVCERR または TPEV_SVCFAIL エラーが返されると、会話は終了します。サーバがコンテキストを保持している場合、TEDG は BEA TOP END の対話を切断します (TP_DISCONNECT)。

エラー値

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

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

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

BEA Tuxedo のエラー値

原因

TPEV_SVCERR

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

TPEV_SVCERR

tpconnect 要求が非会話型サービス (CONV=N) に送信されました。

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

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

TPEV_SVCERR

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

TPEV_SVCERR

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

TPEV_SVCERR

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

TPEV_SVCERR

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

TPEV_SVCERR

TPRECVONLY が指定されていないか、または TPSENDONLY が設定されています。

TPEV_SVCERR

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

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

TPEV_SVCERR

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

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

TPEV_SVCERR

ほかのすべてのエラー。

TPEV_SVCFAIL

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

TPEV_DISCONIMM

リンク障害、プロトコルまたは状態エラーが発生しました。


 

関連項目

 

先頭へ戻る 前のトピックへ 次のトピックへ