Hitachi

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


2.2.1 常設コネクションの確立・解放

常設コネクションを確立するためには,OpenConnectionメソッドを呼び出します。接続要求先のrapサーバの位置は,OpenConnectionメソッドの引数で指定するか,構成ファイルの構成定義で指定します。ただし,CUP.NETとrapリスナー,rapサーバとの間に仮想アドレスを持つネットワーク機器がある場合は,そのアドレスを指定してください。

常設コネクションは,TP1Clientクラスの1インスタンスに対して1コネクションだけ確立できます。

常設コネクションの管理方法には,非オートコネクトモードとオートコネクトモードの二つのモードがあります。どちらのモードを使用するかは,Client .NET構成定義の<rapService>要素のautoConnect属性で指定するか,またはSetRpcExtendメソッドで指定してください。

〈この項の構成〉

(1) 非オートコネクトモード

非オートコネクトモードは,CUP.NETで明示的にOpenConnectionメソッドを呼び出してTP1/Serverのrapリスナー,rapサーバとの常設コネクションを確立します。OpenConnectionメソッドを呼び出さないでサービスを要求した場合は,例外が発生します。常設コネクションを解放するには,CloseConnectionメソッドを呼び出します。CloseConnectionメソッドを呼び出して常設コネクションを解放したあとは,OpenConnectionメソッドで再び常設コネクションを確立するまでサービスは要求できません。なお,CloseConnectionメソッドが失敗した場合でも常設コネクションは解放されます。また,CloseConnectionメソッドを呼び出さないままCloseRpcメソッドを呼び出した場合には,自動的に常設コネクションは解放されます。

非オートコネクトモードを使用する場合のコーディング例を次に示します。

非オートコネクトモードのコーディング例1
public class Sample1 {
  public static void Main(string args[]) {
             :
    TP1Client clt = new TP1Client();
             :
    clt.OpenConnection(...);
             :
    clt.Call(...);
             :
    clt.CloseConnection(...);
  }
}
非オートコネクトモードのコーディング例2
public class Sample2 {
  public static void Main(string args[]) {
             :
    TP1Client clt = new TP1Client();
             :
    clt.OpenRpc();
             :
    clt.OpenConnection(...);
             :
    clt.Call(...);
             :
    clt.CloseConnection(...);
             :
    clt.CloseRpc();
  }
}

(2) オートコネクトモード

オートコネクトモードは,Client .NETで常設コネクションを管理します。

サービスを要求したときに常設コネクションが確立されていなかった場合は,自動的にrapリスナー,rapサーバとの常設コネクションを確立します。このため,OpenConnectionメソッドを呼び出すことはできません。呼び出した場合は例外が発生します。常設コネクションを解放するにはCloseRpcメソッドを呼び出します。ただし,Client .NETで管理している常設コネクションを強制的に解放したい場合は,CloseConnectionメソッドを呼び出します。

オートコネクトモードを使用する場合のコーディング例を次に示します。

オートコネクトモードのコーディング例1
public class Sample1 {
  public static void Main(string args[]) {
             :
    TP1Client clt = new TP1Client();
             :
    clt.OpenRpc(...);
             :
    clt.Call(...);
             :
    clt.CloseRpc();
  }
}
オートコネクトモードのコーディング例2
public class Sample2 {
  public static void Main(string args[]) {
             :
    TP1Client clt = new TP1Client();
             :
    clt.OpenRpc(...);
             :
    clt.Call(...);
             :
    clt.CloseConnection();
             :
    clt.Call(...);
             :
    clt.CloseRpc();
  }
}