Hitachi

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


2.4.1 コネクションの生成とプーリング

Connector .NETは,Client .NETが提供するTP1Clientクラスのインスタンスにハンドルを関連づけて管理します。TP1Clientクラスのインスタンスに関連づけられたハンドルのことを,コネクションと呼びます。

〈この項の構成〉

(1) コネクションの生成

コネクションの生成の概要を,次の図に示します。

図2‒21 コネクションの生成

[図データ]

注※

実際のコネクション制御は,RPCの通信形態やTCP/IP通信時の構成定義によって異なります。

  1. Connector .NETのアプリケーションからTP1ConnectionManagerクラスのGetConnectionメソッド(またはGetTcpipConnectionメソッド)が呼び出されると,TP1Clientクラスのインスタンスが生成されます。

    このとき,アプリケーションのプロファイルIDに指定されたClient .NET構成定義に基づいて,TP1ClientクラスのOpenRpcメソッドが呼び出され,RPC環境が初期化されます。

  2. TP1ConnectorManagerクラスは,コネクション(TP1ConnectionオブジェクトまたはTcpipConnectionオブジェクト)を生成します。

  3. GetConnectionメソッド(またはGetTcpipConnectionメソッド)にコネクションを返します。

  4. アプリケーションは,コネクションに対してRPC要求(またはTCP/IP通信)を実行します。

(2) コネクションのプーリング

Connector .NETでは,資源を効率的に使用するために,一度生成されたコネクションをプーリングできます。この領域を,コネクションプールと呼びます。コネクションプールは,最初にアプリケーションからGetConnectionメソッド(またはGetTcpipConnectionメソッド)が呼び出されたときにアプリケーションドメインごとに生成され,コネクションが解放されるとTP1Clientクラスのインスタンスがプーリングされます。

コネクションプーリング機能の概要を,次の図に示します。

図2‒22 コネクションのプーリング

[図データ]

  1. アプリケーションからTP1ConnectionクラスのDisposeメソッドが呼び出されると,使用していたコネクションが解放されます。

  2. 使用していたコネクションは,コネクションプールにプーリングされます。

GetConnectionメソッド(またはGetTcpipConnectionメソッド)が呼び出された時に,コネクションプール内に同じプロファイルID(Client .NET構成定義のプロファイルID)のコネクションが存在する場合は,新たにTP1Clientクラスのインスタンスを生成しないで,コネクションプール内のコネクションを取得します。

図2‒23 コネクションプールからのコネクションの取得

[図データ]

注※

実際のコネクション制御は,RPCの通信形態やTCP/IP通信時の構成定義によって異なります。

  1. アプリケーションからTP1ConnectionManagerクラスのGetConnectionメソッド(またはGetTcpipConnectionメソッド)が呼び出されます。

    このとき,アプリケーションのプロファイルIDで指定されたClient .NET構成定義に基づいて,TP1ClientクラスのOpenRpcメソッドが呼び出され,RPC環境が初期化されます。

  2. コネクションプール内に同じプロファイルIDのコネクション(TP1ConnectionオブジェクトまたはTcpipConnectionオブジェクト)が存在するため,TP1ConnectorManagerクラスはコネクションプールからコネクションを取得します。

  3. GetConnectionメソッド(またはGetTcpipConnectionメソッド)にコネクションを返します。

  4. アプリケーションは,コネクションに対してRPC要求(またはTCP/IP通信)を実行します。