Hitachi

OpenTP1 Version 7 分散トランザクション処理機能 OpenTP1 クライアント使用の手引 TP1/Client/J編


2.4.6 TCP/IP通信機能を使用するときの注意事項

TCP/IP通信機能を使用する場合の注意事項について説明します。

〈この項の構成〉

(1) メッセージ送信時の注意事項

(a) 障害発生時のメッセージの消失

次に示す障害が発生すると,TP1/Client/J,およびMHPでは,メッセージが消失したことを検出できません。したがって,ユーザはメッセージ中に通番を付けるなどして,障害に備えてください。

  • ソケットのバッファにTP1/Client/Jが送信したメッセージが書き込まれて送信が正常終了した直後に,通信障害が発生したり,コネクションが解放されたりした場合

  • TP1/Client/Jが送信したメッセージがMHPの受信バッファに書き込まれる直前に通信障害が発生したり,コネクションが解放されたりした場合

(b) コネクションの確立

TP1/Client/Jがクライアントとなり,MHPにメッセージを送信します。そのため,TP1/Client/JからMHPに対して,コネクションを確立します。MHPがTP1/NET/TCP/IPを使用している場合,コネクションはサーバ型となります。

(2) メッセージ受信時の注意事項

(a) 障害発生時のメッセージの消失

次に示す障害が発生すると,TP1/Client/J,およびMHPでは,メッセージが消失したことを検出できません。したがって,ユーザはメッセージ中に通番を付けるなどして,障害に備えてください。

  • ソケットのバッファにMHPが送信したメッセージが書き込まれて送信が正常終了した直後に,通信障害が発生したり,コネクションが解放されたりした場合

  • MHPが送信したメッセージがTP1/Client/J側の受信バッファに書き込まれる直前に通信障害が発生したり,コネクションが解放されたりした場合

(b) 受信するメッセージの確認

任意のMHPからのメッセージを受信できます。そのため,コネクションの確立要求を受けると,その要求を無条件に受諾してメッセージを受信します。ユーザは,メッセージ識別子が含まれたヘッダをメッセージ中に含めるなどして,CUPが受け取るメッセージかどうかを確認してください。

(c) メッセージ長

メッセージは,TCP/IPプロトコルを使用して受信します。TCP/IPプロトコルでは,一つのメッセージを複数のパケットに分割したり,複数のメッセージを一つのパケットに詰め込んだりします。そのため,受信したメッセージの切れ目は,ユーザが指定するメッセージ長で判断します。ユーザはメッセージ長を含めた固定長のヘッダを最初に受信し,ヘッダに含まれているメッセージ長を指定して,実際のメッセージを受信してください。

指定したメッセージ長より短いメッセージを受信した場合,TP1/Client/Jは,メッセージが分割されているものとみなします。そのため,指定した長さ分のメッセージを受信するまで,CUPに制御を戻しません。

(d) コネクションの確立

TP1/Client/Jがサーバとなり,MHPからのメッセージを受信します。そのため,MHPからTP1/Client/Jに対して,コネクションを確立します。MHPがTP1/NET/TCP/IPを使用している場合,コネクションはクライアント型となります。