Hitachi

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


2.4.2 メッセージの一方受信

MHPから送信されたメッセージをCUPで受信できます。これをメッセージの一方受信といいます。

CUPは,cltReceiveメソッドを実行して,MHPからのメッセージをTCP/IPプロトコルを使用して受信します。メッセージの組み立て機能を使用する場合は,cltAssemReceiveメソッドを実行します。

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

指定したメッセージ長よりも短いメッセージを受信した場合,TP1/Client/Jは,メッセージが分割されているものとみなし,指定した長さ分のメッセージを受信するまで,CUPに制御を戻しません。タイムアウトやエラーが発生したときに,指定した長さ分のメッセージに満たない場合でも,その時点までのメッセージを受信できます。ただし,それ以降のメッセージの組み立ては,ユーザの責任で行ってください。

メッセージを一方受信するには,あらかじめ,TP1/Client/J環境定義で次に示す指定をしておく必要があります。

マルチスレッドで動作するCUPを含め,同一マシンでCUPを複数実行する場合は,TP1/Client/J環境定義dcrcvportオペランドをCUPごと(スレッドごと)に異なるポート番号となるように設定してください。CUPごとのTP1/Client/J環境定義の設定方法については,「5.2.3 TP1/Client/J環境定義を指定するときの注意事項」を参照してください。受信用ソケットの開設は,rpcOpenメソッド実行時に行います。

メッセージの一方受信を,次の図に示します。

図2‒19 メッセージの一方受信

[図データ]

  1. MHPがコネクションの確立要求を再試行している間にCUPを起動し,cltReceiveメソッドを実行します。再試行中にコネクションを確立できなかった場合,mcftactcnコマンドを入力してコネクションを確立します。

  2. MHPからコネクションが解放された場合,CUPに例外ErrConnfreeExceptionを返します。

  3. 再びメッセージを一方受信するには,cltReceiveメソッドを実行します。この場合,mcftactcnコマンドを入力して,コネクションを確立してください。

障害発生時のメッセージの一方受信を,次の図に示します。

図2‒20 メッセージの一方受信(障害発生時)

[図データ]