4.14.1 RPC要求受信およびRPC応答送信時のタイムアウト
TP1インバウンドアダプタでは,RPC要求受信およびRPC応答送信時のタイムアウトを設定できます。これにより,ネットワークの障害やOpenTP1の障害などが発生し,RPC通信が待ち状態となった場合に,通信タイムアウトが発生することで障害を検知できます。
また,TP1インバウンドアダプタではMessage-driven Bean(サービス)の実行時間タイムアウトも設定できます。これにより,業務処理で無限ループやデッドロックが発生した場合などに,実行時間タイムアウトによって強制的に業務処理を終了できます。
タイムアウトが設定できるポイントとタイムアウトの有効範囲を次の図に示します。
|
次に,この図のタイムアウトが設定できるポイントでのタイムアウトの設定方法について説明します。
- 〈この項の構成〉
(1) OpenTP1での設定
図4-19の1のポイントと7のポイントのタイムアウトの設定は,OpenTP1で実施します。タイムアウトの設定方法を次の表に示します。
図中番号 |
設定項目 |
設定ファイル |
説明 |
---|---|---|---|
1 |
RPC最大応答待ち時間 |
ユーザサービス定義※ (watch_time) |
RPC要求を送信してからサービスの応答が返るまでの待ち時間を秒単位で指定します。 |
7 |
TCP受信タイムアウト |
ユーザサービス定義※ (ipc_header_recv_time) |
データを受信してから通信制御用のデータを受信するまでのタイムアウト時間を秒単位で指定します。 |
注 タイムアウトが発生した場合,dc_rpc_call関数にはエラーが返されます。タイムアウトが発生した場合のTP1インバウンドアダプタのRPCエラー応答の詳細については,「4.17 TP1インバウンドアダプタで発生するRPCエラー応答」を参照してください。
注※ 詳細については,マニュアル「OpenTP1 システム定義」のユーザサービス定義の説明を参照してください。
(2) アプリケーションサーバの実行環境での設定
図4-19の2のポイントから6のポイントまでのタイムアウトの設定は,アプリケーションサーバの実行環境で実施します。タイムアウトの設定方法を次の表に示します。
図中番号 |
設定項目 |
設定ファイル※1 |
説明 |
---|---|---|---|
2 |
RPC要求の受信タイムアウト |
Connector属性ファイル (rpc_receive_timeoutプロパティ) |
OpenTP1から最初の要求電文を受信し始めてから,すべての要求電文の受信を完了するまでのタイムアウト時間を秒単位で指定します。なお,すべての要求電文を受信する前にコネクションが切断されたRPC要求もタイムアウトの対象に含まれます※2。 |
3 |
TCP受信タイムアウト |
Connector属性ファイル (tcp_receive_timeoutプロパティ) |
要求電文の受信(read)を開始してから完了するまでのタイムアウト時間を秒単位で指定します。 |
4 |
サービス実行タイムアウト※3 |
cosminexus.xml (<ejb-method-observation-timeout>タグ) |
Message-driven Bean(サービス)の実行時間を秒単位で指定します。 |
cosminexus.xml (<method-observation-recovery-mode>タグ) |
「thread」を指定します。 |
||
5 |
TCP送信コネクション確立タイムアウト |
Connector属性ファイル (connection_timeoutプロパティ) |
電文を送信する際,新たにコネクションを接続する場合のコネクション確立処理のタイムアウト時間※4を秒単位で指定します。 |
6 |
TCP送信タイムアウト |
Connector属性ファイル (tcp_send_timeoutプロパティ) |
応答電文の送信(write)を開始してから完了するまでのタイムアウト時間を秒単位で指定します。 |
注 タイムアウトが発生した場合,エラーメッセージが出力されます。また,dc_rpc_call関数にはエラーが返されます。タイムアウトが発生した場合のTP1インバウンドアダプタのRPCエラー応答の詳細については,「4.17 TP1インバウンドアダプタで発生するRPCエラー応答」を参照してください。
注※1 属性ファイルの詳細については,マニュアル「アプリケーションサーバ リファレンス 定義編(アプリケーション/リソース定義)」の「4.1 Connector属性ファイル」を参照してください。
注※2 分割された要求電文の受信中はTCP受信タイムアウトのチェックが優先されるため,RPC要求の受信タイムアウトは発生しません。また,Connector属性ファイルのrpc_receive_timeout_intervalプロパティに指定した時間の分,タイムアウトの発生が遅れる場合があります。
注※3 サービス実行のタイムアウトには,アプリケーションサーバのメソッドキャンセル機能を使用します。タイムアウトが発生した場合,Message-driven Bean(サービス)は,EJB仕様で定められたシステム例外が発生した場合と同等の動作をしたあとで,OpenTP1にRPCエラーを応答します。
注※4 RPC応答送信時のコネクション確立処理のタイムアウト時間は,Connector属性ファイルのconnection_timeoutプロパティに設定します。タイムアウト発生時,コネクション確立処理はリトライしないでRPC応答送信を終了します。ただし,OSに設定されているTCP通信のタイムアウト値によっては,Connector属性ファイルのconnection_timeoutプロパティの設定時間よりも早くコネクション確立処理がタイムアウトすることがあります。この場合,Connector属性ファイルのsend_retry_countプロパティとsend_retry_intervalプロパティの設定値に従って,コネクション確立処理をリトライします。TCP通信のタイムアウトについては,OSのドキュメントを参照してください。