rapService
形式
<rapService port="rapリスナーのポート番号" autoConnect="true|false" delay="最大通信遅延時間" watchTimeInheritance="true|false" inquireTime="問い合わせ間隔最大時間" randomSelect="true|false" connectInformation="端末識別情報" inquireTimeCheck="true|false"/>
説明
rapサービスを使用したRPCに関する指定をします。
<rpc>要素のuse属性でrapを指定した場合,この要素は省略できません。その場合,必ず<common>要素内または<profile>要素内にこの要素を一つ以上指定してください。
属性
●port="rapリスナーのポート番号" 〜〈符号なし整数〉((5001〜65535))
クライアントが属しているOpenTP1のrapリスナーのポート番号またはファイアウォールのポート番号を指定します。
<tp1Server>要素のport属性が省略された場合,この属性の値が有効になります。
この属性は省略できます。省略する場合,必ず<tp1Server>要素のport属性の値を指定してください。
●autoConnect="true|false" 〜《false》
CUP.NETとOpenTP1のrapサーバとの間の常設コネクションを自動的に確立させるかどうかを指定します。
この属性は省略できます。
true:次回メソッド実行時に,常設コネクションが確立されていない場合は,自動的に常設コネクションを確立します。常設コネクション確立要求先は,<tp1Server>要素のhost属性に指定したrapリスナーです。
false:常設コネクションを自動的に確立させません。
●delay="最大通信遅延時間" 〜〈符号なし整数〉((0〜65535))《0》(単位:秒)
CUP.NETとOpenTP1のrapサーバとの間の通信オーバヘッドを考慮し,rapサーバ側の応答監視をクライアント側よりも早く終わらせる場合に指定します。この属性を指定すると,rapサーバ側の監視を指定した時間分だけ早く終了させ,クライアント側の監視時間のタイムアウトによるメッセージのすれ違いを防ぎます。
Client .NETの<rpc>要素のwatchTime属性に0を指定した場合,またはSetDcwatchtimメソッドで0を指定した場合は,<rapService>要素のdelay属性に指定した値は無視されます。<rpc>要素のwatchTime属性に指定した値から<rapService>要素のdelay属性に指定した値を引いたときに,0または負の値になった場合も,<rapService>要素のdelay属性に指定した値は無視され,1が仮定されます。
●watchTimeInheritance="true|false" 〜《false》
rapサービスを使用したRPCを行う場合に,CUP.NETの最大応答待ち時間をrapサーバ側に引き継ぐかどうかを指定します。
この属性は省略できます。
true:rapサーバ側にCUP.NETの最大応答待ち時間を引き継ぎます。
false:rapサーバ側にCUP.NETの最大応答待ち時間を引き継ぎません。
●inquireTime="問い合わせ間隔最大時間" 〜〈符号なし整数〉((0〜1048575))(単位:秒)
CUP.NET実行プロセスがrapサーバに対して問い合わせを行ってから,次回の問い合わせをするまでの間隔の最大時間を指定します。問い合わせ間隔最大時間は,rapサーバで監視するタイマです。rapサーバでは,問い合わせ間隔を監視し,問い合わせ間隔最大時間を超えてもrapサーバに問い合わせがない場合,常設コネクションを解放します。また,トランザクション内で問い合わせ間隔最大時間に達したことを検知した場合は,該当するトランザクションを強制的にロールバックします。
常設コネクションを解放しないでCUP.NET実行プロセスが異常終了した場合は,この属性を指定することでrapサーバを有効活用できます。
この属性の値に0を指定した場合は,間隔を監視しません。
この属性を省略した場合は,rapサーバで指定された問い合わせ間隔最大時間が有効になります。
TP1/Client for .NET Frameworkのバージョン07-03-07以降では,この属性に0以外を指定し,オートコネクトモードでRPCを実行した場合,CUP.NET実行プロセスでも問い合わせ間隔最大時間をチェックします。
対象となるRPCは,次の3種類です。
-
Callメソッドを使用したRPC
-
.NETインタフェース定義を使用したRPC
-
サービス定義(カスタムレコード)を使用したRPC
CUP.NET実行プロセスで問い合わせ間隔最大時間をチェックするかどうかは,<rapService>要素のinquireTimeCheck属性の指定値に従います。
この属性とあわせて,inquireTimeCheck属性も参照してください。
なお,rapサーバが常設コネクションを解放するタイミングと,CUP.NET実行プロセスがRPCを実行するタイミングが重なった場合,RPCの実行に失敗してErrNetDownAtClientException例外を返すことがあります。
この現象を回避するため,<rapService>要素の次の属性を指定し,CUP.NET実行プロセスで「問い合わせ間隔最大時間」をチェックするように設定してください。
-
inquireTimeCheck属性にtrueを指定
-
inquireTime属性に0以外を指定
-
autoConnect属性にtrueを指定
属性の詳細は,<rapService>要素のinquireTimeCheck,およびautoConnect属性を参照してください。
●randomSelect="true|false" 〜《false》
窓口となるTP1/Serverをランダムに選択するかどうかを指定します。
この属性は,窓口となるTP1/Serverを複数指定した場合にだけ有効です。
この属性は省略できます。
true:窓口となるTP1/Serverをランダムに選択します。
false:窓口となるTP1/Serverをランダムに選択しません。
●connectInformation="端末識別情報"
端末識別情報として,DCCM3論理端末の論理端末名称をEBCDIKコードで指定します。端末識別情報は,先頭に0xを付け,0xの後ろに128文字までの16進数表記で指定します。先頭の0xは128文字に含まれません。2文字で1バイトの値として,64バイト(128文字)まで指定できます。ただし,DCCM3側では先頭8バイト目までに指定した値だけが有効になるため,9バイト目以降に指定された値は無視されます。
この属性に指定した値は,SetConnectInformationメソッドを呼び出すことで,動的に変更できます。この属性に指定した値は,SetConnectInformationメソッドを呼び出したあと,再びOpenRpcメソッドを呼び出すまで無視されます。
この属性は,Client .NET構成定義の<tp1Server>要素のhost属性にDCCM3論理端末のホスト名を,<tp1Server>要素のport属性または<rapService>要素のport属性にDCCM3論理端末のポート番号を指定し,次のどちらかの方法でDCCM3論理端末との常設コネクションを確立した場合に有効となります。
-
OpenConnectionメソッドを呼び出します。引数有りのOpenConnectionメソッドの場合,引数hostにDCCM3論理端末のホスト名,引数portにDCCM3論理端末のポート番号を指定します。
-
Client .NET構成定義の<rapService>要素のautoConnect属性にtrueを指定し,Callメソッドを呼び出します。
この属性は省略できます。省略した場合,DCCM3論理端末に端末識別情報を通知しません。ただし,SetConnectInformationメソッドを呼び出した場合は,SetConnectInformationメソッドに指定した端末識別情報が,DCCM3論理端末との常設コネクション確立時にDCCM3論理端末に通知されます。
●inquireTimeCheck="true|false" 〜《true》
常設コネクションを使用し,かつオートコネクトモード※1の場合に,CUP.NET実行プロセスで「問い合わせ間隔最大時間」をチェックするかどうかを指定します。
rapサーバが常設コネクションを解放するタイミングと,CUP.NET実行プロセスがRPCを実行するタイミングが重なった場合,RPCの実行に失敗してErrNetDownAtClientException例外を返すことがあります。
この現象を回避するためには,inquireTimeCheck属性を指定します。
この属性を省略,またはこの属性にtrueを指定した場合,「問い合わせ間隔最大時間」には0以外を指定※2してください。
なお,この属性はTP1/Client for .NET Frameworkのバージョン07-03-07以降で指定できます。
この属性は省略できます。
true:CUP.NET実行プロセスで,「問い合わせ間隔最大時間」をチェックします。
false:CUP.NET実行プロセスで,「問い合わせ間隔最大時間」をチェックしません。
省略した場合は,CUP.NET実行プロセスでも「問い合わせ間隔最大時間」をチェックします。
TP1/Client for .NET Frameworkのバージョン07-03-07以降,CUP.NET実行プロセスは,トランザクション処理の処理区間外※3,かつ連鎖型RPCの処理区間外※4でRPCを実行するタイミングで問い合わせ間隔をチェックします。
対象となるRPCは,次の3種類です。
-
Callメソッドを使用したRPC
-
.NETインタフェース定義を使用したRPC
-
サービス定義(カスタムレコード)を使用したRPC
問い合わせ間隔のチェックは次の計算式で求めた時間を使用します。この時間を超過した場合は,常設コネクションを解放して再接続しRPCを実行します。
チェック時間=問い合わせ間隔最大時間−T
- T:問い合わせ間隔最大時間の2%の値
-
ただし,250ミリ秒≦T≦3秒となります。
- 注※1 次のどちらかの場合が,オートコネクトモードに該当します。
-
(a) Client .NET構成定義の<rapService>要素のautoConnect属性にtrueを指定している。
(b) CUP.NET内で,SetRpcExtendメソッドのextendoptionパラメタにDCRPC_RAP_AUTOCONNECTを指定して実行している。
- 注※2 <rapService>要素のinquireTime属性に0以外を指定してください。
-
または,CUP.NET内で,SetRapInquireTimeメソッドのsecパラメタに0以外を指定して実行してください。
- 注※3 次の(a),(b)の条件が重なった場合がトランザクション処理の処理区間外になります。
-
(a) MSDTC連携機能を使用していない。
(CUP.NETがTP1/Connector for .NET Framework上で動作していない,またはCUP.NETがTP1/Connector for .NET Framework上で動作しているがConnector .NET構成定義の<distributedTransaction>要素のuse属性にtrueを指定していない。)
(b) Beginメソッド実行からCommit/Rollbackメソッドを実行するまでの処理区間外である。
注※4 連鎖型RPCでも,初回のCallメソッドでは問い合わせ間隔をチェックします。
記述例
<rapService port="10020" autoConnect="false" delay="0" watchTimeInheritance="false" inquireTime="100" connectInformation="0xC1C2F0F1" inquireTimeCheck="true"/>