Hitachi

OpenTP1 Version 7 分散トランザクション処理機能 TP1/Client for .NET Framework 使用の手引


2.15.2 rapリスナー,DCCM3論理端末との通信時

〈この項の構成〉

(1) 通信先ホスト複数指定個所

Client .NET構成定義の<tp1Server>要素のhost属性に指定します。

(2) 通信先ホスト選択契機

OpenRpcメソッド実行時に選択します。

接続障害が発生している場合は,メソッド実行時にホストを切り替えます。

表2‒45 ホスト切り替えの契機

実行メソッド

ホスト切り替えの契機

Call

Client .NET構成定義の<rapService>要素がautoConnect="true",かつ<rpc>要素がuse="rap"の場合

rapリスナー,DCCM3論理端末との接続に失敗したときにホストを切り替えます。

Begin

OpenConnection(引数なし)

Client .NET構成定義の<rapService>要素がautoConnect="false",かつ<rpc>要素がuse="rap"の場合

rapリスナー,DCCM3論理端末との接続に失敗したときにホストを切り替えます。

注※

トランザクションの範囲内で実行した場合は該当しません。

(3) 通信先ホスト選択方法

Client .NET構成定義の<nameService>要素のrandomSelect属性の指定値によって,選択方法が異なります。randomSelect属性の指定を省略,またはfalseを指定した場合,<tp1Server>要素のhost属性に指定された順番に通信先ホストを選択します。

この指定の場合,Client .NET構成定義の<tp1Server>要素のhost属性に同一の指定を行った複数のCUP.NETから一斉にサービスを要求した場合,1つのホストに負荷が集中してしまいます。randomSelect属性にtrueを指定すると,OpenRpc実行時にランダムに通信先ホストを選択するため,サーバの負荷を分散させることができます。

表2‒46 通信先ホストの選択方法

randomSelect

通信先ホストの選択方法

初回選択時

(OpenRpcメソッド実行時)

接続障害発生時

false

先頭に指定されたホストを選択します。

障害となったホストの次に指定されたホストを選択します。

true

複数指定されたホストの中からランダムに選択します。

障害となったホストの次に指定されたホストを選択します。

ホスト切り替えは,通信が成功するまで繰り返し行います。指定されたすべてのホストとの接続に失敗した場合,メソッドはエラーリターンします。

次メソッド発行時,再度ホスト切り替えが発生した場合,前回障害となったホストも切り替えるホストの対象となります。

ホスト切り替えによって決定したホストは,次の契機で再びホストの選択,または切り替えが発生するまで,通信先ホストとなります。

例1) 次の指定の場合
<tp1Server host="hostA">
<tp1Server host="hostB">
<tp1Server host="hostC">
<nameService randomSelect="false">
 
1.  OpenRpcメソッド発行 
      先頭に指定されたhostAを選択 
        +-----+
        |hostA|  hostB   hostC
        +-----+
      hostAとの接続に成功 
2.  Callメソッド発行 
      hostAとの接続障害発生 
      障害となったhostAの次に指定されたhostBを選択 
              +-----+
        ×    |hostB|  hostC
              +-----+
      hostBとの接続障害発生 
      障害となったhostBの次に指定されたhostCを選択 
                        +-----+
          ×     ×     |hostC|
                        +-----+
      hostCとの接続に成功 
3.  Call発行メソッド 
      hostCとの接続障害発生 
      障害となったhostCの次に指定されたhostAを選択 
        +-----+
        |hostA|  hostB    ×
        +-----+
      hostAとの接続障害発生 
      障害となったhostAの次に指定されたhostBを選択 
                +-----+
          ×    |hostB|   ×
                +-----+
      hostBとの接続障害発生 
      選択対象ホストがなくなりメソッドはエラーリターン 
4.  Callメソッド発行 
      3.で最後に接続障害が発生したホストhostBを選択 
               +-----+
        hostA  |hostB|  hostC
               +-----+
5.  CloseRpcメソッド発行 
6.  OpenRpcメソッド発行 
      先頭に指定されたhostAを選択 
例2) 次の指定の場合
<tp1Server host="hostA">
<tp1Server host="hostB">
<tp1Server host="hostC">
<nameService randomSelect="true">
 
1.  OpenRpcメソッド発行 
      hostA,hostB,hostCからランダム選択 
                +-----+
         hostA  |hostB|  hostC
                +-----+
      hostBとの接続に成功 
2.  Callメソッド発行 
      hostBとの接続障害発生 
      障害となったhostBの次に指定されたhostCを選択 
                        +-----+
         hostA    ×    |hostC|
                        +-----+
      hostCとの接続障害発生 
      障害となったhostCの次に指定されたhostAを選択 
        +-----+
        |hostA|    ×     ×
        +-----+
      hostAとの接続に成功 
3.  Callメソッド発行 
      hostAとの接続障害発生 
      障害となったhostAの次に指定されたhostBを選択 
                +-----+
          ×    |hostB|  hostC
                +-----+
      hostBとの接続障害発生 
      hostCを選択 
                        +-----+
          ×     ×     |hostC|
                        +-----+
      hostCとの接続障害発生 
      選択対象ホストがなくなりメソッドはエラーリターン 
4.  Callメソッド発行 
      3.で最後に接続障害が発生したホストhostCを選択 
                        +-----+
         hostA   hostB  |hostC|
                        +-----+
5.  CloseRpcメソッド発行 
6.  OpenRpcメソッド発行 
      hostA,hostB,hostCからランダム選択