2.2.15 MSDTC連携機能を使用する場合の構成定義での指定
MSDTC連携機能を使用する場合,アプリケーションとトランザクションリカバリサービスの両方の構成定義を指定する必要があります。構成定義の詳細については,「3. 構成定義」の「distributedTransaction」および「recoveryService」を参照してください。また,Client .NET構成定義については,マニュアル「TP1/Client for .NET Framework 使用の手引」を参照してください。
(1) アプリケーションの設定
アプリケーション構成ファイル(Web.config,<アプリケーションの実行ファイル名>.configなど)に,次に示す定義を追加してください。
-
MSDTC連携機能使用の有無
<distributedTransaction>要素のuse属性にtrueを指定してください。
-
ノード識別子の指定
<distributedTransaction>要素のnodeId属性に指定するノード識別子は,Connector .NETでMSDTC連携機能を使用しているOS環境を一意に識別するためのIDです。
<distributedTransaction>要素のnodeId属性の指定値は,トランザクションリカバリサービスの構成定義の<recoveryService>要素のnodeId属性と一致させる必要があります。この値が一致していない場合,トランザクション開始時にアプリケーションでエラーが発生します。すでにトランザクションリカバリサービスでノード識別子を指定している場合は,その値を使用して指定してください。ノード識別子を新規に作成する場合は,MSDTC連携機能で使用するノード識別子生成コマンド(cnnnidgen)を実行してください。
-
単一フェーズコミット最適化使用の有無
単一フェーズコミット最適化を行う場合は,<distributedTransaction>要素のoptimize1PC属性にtrueを指定してください。
-
未決着トランザクションの回復間隔の指定
<distributedTransaction>要素のrecoverRetryInterval属性に,アプリケーションのバックグラウンドスレッドから未決着トランザクションの回復処理を行う間隔を指定してください。
-
窓口となるOpenTP1のホスト名およびポート番号の指定
Client .NET構成定義の<tp1Server>要素のhost属性およびport属性に,窓口となるOpenTP1のホスト名およびポート番号を指定してください。MSDTC連携機能を使用するクライアントアプリケーションに指定できるOpenTP1のホスト名およびポート番号は,プロファイルID一つにつき一つずつです。
-
ログレベルの指定
アプリケーションが,トランザクションリカバリサービスに未決着トランザクションが存在する旨を通知した場合などに情報を出力したいときは,<log>要素のlevel属性に2(ログレベル2)を指定してください。トランザクションごとにコミットやロールバックが完了したなどの詳しい情報を出力したい場合は,<log>要素のlevel属性に3(ログレベル3)を指定してください。
-
最大同時使用コネクション数
WCF連携機能を使用する場合は,<connection>要素のactive属性に,一つのトランザクション内で発行するTP1RpcClientクラスのCallメソッドの数以上を指定してください。
(2) トランザクションリカバリサービスの設定
〈Connector .NETのインストールディレクトリ〉\trs下に,トランザクションリカバリサービスのアプリケーション構成ファイル(cnntrs.exe.config)を作成してください。
Connector .NETでは,トランザクションリカバリサービスの構成定義のサンプルを〈Connector .NETのインストールディレクトリ〉\examples\config下に提供しています。必要に応じてコピーして使用してください。
-
ノード識別子の指定
<recoveryService>要素のnodeId属性に指定するノード識別子は,Connector .NETでMSDTC連携機能を使用しているOS環境を一意に識別するためのIDです。
ノード識別子を作成する場合は,MSDTC連携機能で使用するノード識別子生成コマンド(cnnnidgen)を実行してください。
-
未決着トランザクションの回復間隔の指定
トランザクションリカバリサービスから未決着トランザクションの回復処理を行う間隔を<recoveryService>要素のrecoverRetryInterval属性に指定してください。
-
アプリケーションドメインの監視間隔の指定
アプリケーションドメインの終了を監視する間隔を<recoveryService>要素のappDomainCheckInterval属性に指定してください。
-
未決着トランザクションの確認間隔の指定
トランザクション回復処理の完了後,未決着トランザクションが存在しないかを確認する間隔を<recoveryService>要素のrecoverCheckInterval属性に指定してください。
-
未決着トランザクションの確認回数の指定
トランザクション回復処理の完了後,未決着トランザクションが存在しないかを確認する回数を<recoveryService>要素のrecoverCheckCount属性に指定してください。
-
RMID格納ディレクトリの指定
トランザクションリカバリサービスが未決着トランザクションの回復処理に必要な情報を保存するRMID格納ディレクトリのパスを,<recoveryService>要素のrmidStoragePath属性に指定してください。なお,RMID格納ディレクトリはあらかじめ作成しておいてください。
-
プロファイルIDの指定
トランザクションリカバリサービスの設定でClient .NET構成定義の<tp1Server>要素のhost属性およびport属性に指定するプロファイルIDを,<recoveryService>要素のprofiles属性に指定してください。プロファイルIDは,必ずコンマ(,)で区切って指定してください。
-
窓口となるOpenTP1のホスト名およびポート番号の指定
接続するOpenTP1が一つの場合,接続するOpenTP1は<common>要素内に指定してください。この場合,トランザクションリカバリサービスの設定で<recoveryService>要素のprofiles属性を指定する必要はありません。
接続するOpenTP1が複数ある場合,MSDTC連携機能を使用するアプリケーションが接続するすべてのOpenTP1のホスト名およびポート番号を,Client .NET構成定義の<tp1Server>要素のhost属性およびport属性に指定してください。指定できるOpenTP1のホスト名およびポート番号は,プロファイルID一つにつき一つずつです。なお,アプリケーションのプロファイルIDにはコンマ(,)を使用できますが,トランザクションリカバリサービスの構成定義に指定するプロファイルIDではコンマ(,)は使用しないでください。
-
コネクションに関する定義の指定
-
最大同時使用コネクション数
トランザクションリカバリサービスの設定の,窓口となるOpenTP1のホスト名およびポート番号の指定で指定したプロファイルIDの個数を<connection>要素のactive属性に指定してください。
-
Connector .NETが管理するコネクションプールの最大数
トランザクションリカバリサービスの設定の,窓口となるOpenTP1のホスト名およびポート番号の指定で指定したプロファイルIDの個数を<connection>要素のpooled属性に指定してください。
-
プロファイルが占有できるコネクションプールの最大数
プロファイルが占有できるコネクションプールの最大数を,<occupation>要素のpooled属性に指定してください。プロファイルが占有できるコネクションプールの最大数は,プロファイルID一つにつき一つずつ指定してください。
特に必要がない場合は,これら以上のコネクション数を指定しないでください。これら以上のコネクション数を指定すると,トランザクションリカバリサービスから接続先rapサーバへの常設コネクション数が増加することによって,アプリケーションで接続できるrapサーバの数が減少することがあります。
-
-
ログレベルの指定
トランザクションリカバリサービスの設定では,<log>要素のlevel属性に2(ログレベル2)を指定してください。
-
Client .NETのエラートレースの取得
Client .NET構成定義の<errTrace>要素を指定して,Client .NETのエラートレースを必ず取得してください。
(3) アプリケーションおよびトランザクションリカバリサービスの設定
接続するOpenTP1が一つの場合の設定例を次の図に示します。
|
接続するOpenTP1が複数ある場合で,hostAおよびhostBでMSDTC連携機能を使用する場合の設定例を次の図に示します。
|
トランザクションリカバリサービスでは,プロファイルID,および接続するOpenTP1(hostAおよびhostB)を指定します。このとき,hostCではMSDTC連携機能を使用しないため,hostCのプロファイルIDの指定は不要です。
アプリケーションでは,プロファイルID,および接続するOpenTP1(hostA,hostB,およびhostC)を指定します。MSDTC連携機能を使用する場合,接続するOpenTP1はトランザクションリカバリサービスで指定したOpenTP1を指定してください。AP1では,接続するOpenTP1にhostAおよびhostBを指定します。AP2では,接続するOpenTP1にhostBおよびhostCを指定します。