4.13.1 RPC要求受信およびRPC応答送信時のタイムアウト

TP1インバウンドアダプタでは,RPC要求受信およびRPC応答送信時のタイムアウトを設定できます。これにより,ネットワークの障害やOpenTP1の障害などが発生し,RPC通信が待ち状態となった場合に,通信タイムアウトが発生することで障害を検知できます。

また,TP1インバウンドアダプタではMessage-driven Bean(サービス)の実行時間タイムアウトも設定できます。これにより,業務処理で無限ループやデッドロックが発生した場合などに,実行時間タイムアウトによって強制的に業務処理を終了できます。

タイムアウトが設定できるポイントとタイムアウトの有効範囲を次の図に示します。

図4-19 タイムアウトが設定できるポイントとタイムアウトの有効範囲

[図データ]

次に,この図のタイムアウトが設定できるポイントでのタイムアウトの設定方法について説明します。

<この項の構成>
(1) OpenTP1での設定
(2) アプリケーションサーバの実行環境での設定

(1) OpenTP1での設定

図4-19の1のポイントと7のポイントのタイムアウトの設定は,OpenTP1で実施します。タイムアウトの設定方法を次の表に示します。

表4-25 OpenTP1でのタイムアウトの設定方法

図中番号設定項目設定ファイル説明
1RPC最大応答待ち時間ユーザサービス定義
(watch_time)
RPC要求を送信してからサービスの応答が返るまでの待ち時間を秒単位で指定します。
7TCP受信タイムアウトユーザサービス定義
(ipc_header_recv_time)
データを受信してから通信制御用のデータを受信するまでのタイムアウト時間を秒単位で指定します。

注 タイムアウトが発生した場合,dc_rpc_call関数にはエラーが返されます。タイムアウトが発生した場合のTP1インバウンドアダプタのRPCエラー応答の詳細については,「4.16 TP1インバウンドアダプタで発生するRPCエラー応答」を参照してください。

注※ 詳細については,マニュアル「OpenTP1 システム定義」のユーザサービス定義の説明を参照してください。


(2) アプリケーションサーバの実行環境での設定

図4-19の2のポイントから6のポイントまでのタイムアウトの設定は,アプリケーションサーバの実行環境で実施します。タイムアウトの設定方法を次の表に示します。

表4-26 アプリケーションサーバの実行環境でのタイムアウトの設定方法

図中番号設定項目設定ファイル※1説明
2RPC要求の受信タイムアウトConnector属性ファイル
(rpc_receive_timeoutプロパティ)
OpenTP1から最初の要求電文を受信し始めてから,すべての要求電文の受信を完了するまでのタイムアウト時間を秒単位で指定します。なお,すべての要求電文を受信する前にコネクションが切断されたRPC要求もタイムアウトの対象に含まれます※2
3TCP受信タイムアウトConnector属性ファイル
(tcp_receive_timeoutプロパティ)
要求電文の受信(read)を開始してから完了するまでのタイムアウト時間を秒単位で指定します。
4サービス実行タイムアウト※3cosminexus.xml
(<ejb-method-observation-timeout>タグ)
Message-driven Bean(サービス)の実行時間を秒単位で指定します。
cosminexus.xml
(<method-observation-recovery-mode>タグ)
「thread」を指定します。
5TCP送信コネクション確立タイムアウトConnector属性ファイル
(connection_timeoutプロパティ)
電文を送信する際,新たにコネクションを接続する場合のコネクション確立処理のタイムアウト時間を秒単位で指定します。
6TCP送信タイムアウトConnector属性ファイル
(tcp_send_timeoutプロパティ)
応答電文の送信(write)を開始してから完了するまでのタイムアウト時間を秒単位で指定します。

注 タイムアウトが発生した場合,エラーメッセージが出力されます。また,dc_rpc_call関数にはエラーが返されます。タイムアウトが発生した場合のTP1インバウンドアダプタのRPCエラー応答の詳細については,「4.16 TP1インバウンドアダプタで発生するRPCエラー応答」を参照してください。

注※1 属性ファイルの詳細については,マニュアル「Cosminexus アプリケーションサーバ リファレンス 定義編(アプリケーション/リソース定義)」の「4.1 Connector属性ファイル」を参照してください。

注※2 分割された要求電文の受信中はTCP受信タイムアウトのチェックが優先されるため,RPC要求の受信タイムアウトは発生しません。また,Connector属性ファイルのrpc_receive_timeout_intervalプロパティに指定した時間の分,タイムアウトの発生が遅れる場合があります。

注※3 サービス実行のタイムアウトには,アプリケーションサーバのメソッドキャンセル機能を使用します。タイムアウトが発生した場合,Message-driven Bean(サービス)は,EJB仕様で定められたシステム例外が発生した場合と同等の動作をしたあとで,OpenTP1にRPCエラーを応答します。