2.7.2 会話型サービスの時間監視
会話型サービスの通信では,時間監視はすべてOpenTP1の定義で指定した値に従います。
会話型サービス時のタイムアウトは,次に示す時間を超えた場合に発生します。
-
最大応答待ち時間
-
常設コネクション問い合わせ間隔最大時間
-
トランザクションブランチ限界経過時間
(1) 最大応答待ち時間のタイムアウト
最大応答待ち時間は,CUPおよびCUP実行プロセスによって検出されます。CUPはクライアント環境定義DCWATCHTIMで設定し,CUP実行プロセスはクライアントサービス定義のwatch_timeで設定します。
システムの整合性を保つために,クライアント環境定義DCWATCHTIMはクライアントサービス定義のwatch_timeよりも大きな値を指定する必要があります。CUPがCUP実行プロセスよりも先にタイムアウトを検出した場合,dc_rpc_close_s関数を呼び出さないかぎり,それ以降の通信はできません。この場合,CUP実行プロセスは,問い合わせ間隔最大時間のタイムアウト後に該当するトランザクションを強制的にロールバック(トランザクション中だけ)し,CUPとのコネクションを切断します。
(2) 常設コネクション問い合わせ間隔最大時間のタイムアウト
常設コネクション問い合わせ間隔最大時間は,CUP実行プロセスによって検出されます。時間監視の値は,クライアント環境定義DCCLTINQUIRETIME,またはクライアントサービス定義のclt_inquire_timeで設定します。定義の優先順位は次のとおりです。
クライアント環境定義>クライアントサービス定義
常設コネクション問い合わせ間隔最大時間とは,CUPがCUP実行プロセスに対して行う要求(tpsend関数など)と要求の間隔の最大時間です。
常設コネクション問い合わせ間隔最大時間のタイムアウトの場合,CUP実行プロセスは該当するトランザクションを強制的にロールバック(トランザクション中だけ)し,CUPとのコネクションを切断します。
(3) トランザクションブランチ限界経過時間のタイムアウト
トランザクションブランチ限界経過時間は,CUP実行プロセスによって検出されます。クライアント環境定義DCCLTTREXPTM,またはクライアントサービス定義のtrn_expiration_timeで設定します。定義の優先順位は次のとおりです。
クライアント環境定義>クライアントサービス定義
トランザクションブランチ限界経過時間とは,トランザクションが生成されてから同期点の取得を行うまでの時間をいいます。
トランザクションブランチ限界経過時間のタイムアウトの場合は,CUP実行プロセスが異常終了します。このときすべてのコネクションが強制的に切断され,トランザクションはロールバックされます。
また,設定によっては,トランザクションブランチ限界経過時間以外のタイムアウトを検出しないで,無限に待つこともできます。ただし,トランザクションブランチ限界経過時間満了によるタイムアウトは,定義の設定に関係なく発生します。