11.17 タイムアウト・エラー
Oracle Tuxedoシステムでは、タイムアウト・エラーがサポートされており、アプリケーションがサービス・リクエストまたはトランザクションを待つ時間に制限があります。Oracle Tuxedoシステムでサポートされている設定可能なタイムアウト機構は、ブロッキング・タイムアウトとトランザクション・タイムアウトの2種類です。
ブロッキング・タイムアウトは、アプリケーションがサービス・リクエストに対する応答を待つ時間の上限値を指定します。アプリケーション管理者は、構成ファイルにシステムのブロッキング・タイムアウトを設定します。
トランザクション・タイムアウトは、トランザクション(その中で複数のサービス・リクエストが行われる場合もあります)の有効期間を定義します。アプリケーションのトランザクション・タイムアウトを定義するには、tpbegin()にtimeout引数を渡します。
               
通信呼出しでは、ブロッキング・タイムアウトまたはトランザクション・タイムアウトのいずれかが返され、tpcommit()ではトランザクション・タイムアウトだけが返されます。いずれの場合も、トランザクション・モードのプロセスで呼出しが失敗してTPETIMEが返された場合は、トランザクション・タイムアウトが発生しています。
               
デフォルトでは、プロセスがトランザクション・モードではない場合、ブロッキング・タイムアウトが実行されます。通信呼出しのflagsパラメータにTPNOTIMEを設定すると、フラグの設定値はブロッキング・タイムアウトだけに適用されます。プロセスがトランザクション・モードの場合はブロッキング・タイムアウトは実行されず、TPNOTIMEフラグが設定されていても関係ありません。
               
プロセスがトランザクション・モードではない場合に、非同期呼出しでブロッキング・タイムアウトが発生すると、ブロックされている通信呼出しは失敗します。ただし、呼出し記述子は有効なままであり、再度呼出しを行う場合に使用できます。ほかの通信には影響ありません。
トランザクション・タイムアウトが発生すると、非同期トランザクション応答の呼出し記述子(TPNOTRANフラグが指定されていないもの)は無効になり、参照できなくなります。
               
                  呼出しがトランザクション・モードで行われていない場合、またはflagsパラメータにTPNOBLOCKが設定されていない場合、TPETIMEは通信呼出しでブロッキング・タイムアウトが発生したことを示します。
               
ノート:
TPNOBLOCKフラグが設定されている場合、ブロッキング状態が存在すると呼出しは直ちに戻るので、ブロッキング・タイムアウトは発生しません。
               タイムアウト・エラーの処理の詳細は、「トランザクションについて」 を参照してください。
親トピック: エラーの管理