Hitachi

TPBroker Version 5 トランザクショナル分散オブジェクト基盤 TPBroker ユーザーズガイド


8.3.3 リソースマネージャ定義(C++)

これらの定義はC++実行環境だけに提供されます。

リソースマネージャ定義は,Cosminexus TPBrokerではサポートしていません。

非同期インタバル /OTS/RM/set_xa_async_interval

〜((1〜1000000))<<1000>>(単位:ミリ秒)

リソースマネージャに対してXA関数を非同期で呼び出すときの,処理完了確認(xa_complete)発行インタバルを指定します。

オープン文字列 /OTS/RM/RMn/xa_open_string_info

〜<文字列><<"">>

TPBrokerがリソースマネージャに対してxa_open関数発行時に通知する文字列を指定します。文字列の内容は,使用するリソースマネージャの規定に従ってください。

クローズ文字列 /OTS/RM/RMn/xa_close_string_info

〜<文字列><<"">>

TPBrokerがリソースマネージャに対してxa_close関数発行時に通知する文字列を指定します。文字列の内容は,使用するリソースマネージャの規定に従ってください。

オープン文字列 /OTS/RM/RMn/DMN/xa_open_string_info

〜<文字列><<"">>

TPBrokerのデーモンプロセスがリソースマネージャに対してxa_open関数発行時に通知する文字列を指定します。文字列の内容は,使用するリソースマネージャの規定に従ってください。

クローズ文字列 /OTS/RM/RMn/DMN/xa_close_string_info

〜<文字列><<"">>

TPBrokerのデーモンプロセスがリソースマネージャに対してxa_close関数発行時に通知する文字列を指定します。文字列の内容は,使用するリソースマネージャの規定に従ってください。

オープン文字列 /OTS/RM/RMn/UAPn/xa_open_string_info

〜<文字列><<"">>

アプリケーションプログラムがリソースマネージャに対してxa_open関数発行時に通知する文字列を指定します。文字列の内容は,使用するリソースマネージャの規定に従ってください。

クローズ文字列 /OTS/RM/RMn/UAPn/xa_close_string_info

〜<文字列><<"">>

アプリケーションプログラムがリソースマネージャに対してxa_close関数発行時に通知する文字列を指定します。文字列の内容は,使用するリソースマネージャの規定に従ってください。

xa_open発行タイミング /OTS/RM/set_xa_open_timing "deferred" | "resolve"

〜<<"deferred">>

リソースマネージャに対してxa_open関数を発行するタイミングを指定します。次のどちらかを指定してください。

  • "deferred"

    Currentインタフェースのbegin()の発行,TransactionFactoryインタフェースのcreate()の発行,またはトランザクションのプロパゲ−ションによってトランザクションブランチが開始された時点で,リソースマネージャにxa_open関数を発行します。

  • "resolve"

    ORB_init()が発行された時点で,TPBrokerに接続されている全リソースマネージャにxa_open関数を発行します。

この定義は,リソースマネージャごとには指定できません。また,定義の変更は,変更後のTPBroker開始時ではなく,変更後に起動されたプロセスから有効になります。回復処理への引き継ぎは行われません。xa_openおよびxa_close関数の発行タイミングの詳細は,次の「xa_open発行単位」を参照してください。

xa_open発行単位 /OTS/RM/set_xa_open_scope "process" | "thread"

〜<<"process">>

TPBrokerに接続されているリソースマネージャに対してxa_openおよびxa_close関数を発行する単位を指定します。

/OTS/RM/RMn/set_xa_open_scopeはリソースマネージャごとに指定できます。/OTS/RM/set_xa_open_scopeは,/OTS/RM/RMn/set_xa_open_scopeが設定されていない場合に有効になります。

  • "process"

    xa_openおよびxa_close関数をそれぞれプロセスで1回ずつリソースマネージャに発行します。

    /OTS/RM/set_xa_open_timingに"resolve"が設定されている場合は,プロセスで最初にORB_init()が発行された時点でxa_open関数を発行し,プロセスの停止時にxa_close関数を発行します。ただし,クライアントからのコネクションで生成されたスレッドでORB_init()を発行した場合は,クライアントとのコネクションに割り当てられた全スレッドが終了した時点でxa_close関数が発行されます。

    /OTS/RM/set_xa_open_timingに"deferred"が設定されている場合は,Currentインタフェースのbegin()の発行,TransactionFactoryインタフェースのcreate()の発行,またはトランザクションのプロパゲ−ションのどれかがプロセスで最初に行われた時点で,リソースマネージャにxa_open関数を発行します。トランザクショナルなクライアントでは,プロセスの停止時にリソースマネージャにxa_close関数を発行します。サーバでは,オリジネータとのコネクションに割り当てられた全スレッドが終了した時点で,リソースマネージャにxa_close関数が発行されます。

  • "thread"

    xa_openおよびxa_close関数をそれぞれスレッドで1回ずつリソースマネージャに発行します。

    /OTS/RM/set_xa_open_timingに"resolve"が設定されている場合は,ORB_init()の発行,Currentインタフェースのbegin()の発行,TransactionFactoryインタフェースのcreate()の発行,またはトランザクションのプロパゲ−ションのどれかがスレッドで最初に行われた時点で,リソースマネージャにxa_open関数を発行します。

    /OTS/RM/set_xa_open_timingに"deferred"が設定されている場合は,Currentインタフェースのbegin()の発行,TransactionFactoryインタフェースのcreate()の発行,またはトランザクションのプロパゲーションのどれかがスレッドで最初に行われた時点で,リソースマネージャにxa_open関数を発行します。

    xa_open関数を発行したスレッドが終了するごとに,xa_close関数が発行されます。

なお,/OTS/RM/RMn/set_xa_open_scopeが設定されていない,かつ/OTS/RM/set_xa_open_scopeが設定されている場合,/OTS/RM/set_xa_open_scopeの設定値が有効になります。/OTS/RM/RMn/set_xa_open_scopeおよび/OTS/RM/set_xa_open_scopeが共に設定されていない場合は,デフォルト値の"process"になります。ただし,/OTS/RM/set_xa_open_scopeをプロセスごとに定義することはできません。

リソースマネージャごとの定義

/OTS/RM/RMnのように定義キーを生成し,そのキーに対してxa_open_string_infoおよびxa_close_string_infoを指定します。RMnは,tsmkobjコマンドで指定したリソースマネージャ名称のことです。

プロセスごとの定義

/OTS/RM/RMn/名称のように定義を生成して行います。ここでは,回復プロセスではDMN,アプリケーションプログラムプロセスおよび決着プロセスでは任意の名称を指定できます。各プロセスがどの定義キーを参照するかは,環境変数TPRMINFOの値によって決まります。環境変数TPRMINFOに値が設定されていない場合,および設定された値が示す定義キーが存在しないか,存在してもxa_open_string_infoおよびxa_close_string_infoが設定されていない場合は,/OTS/RM/RMnの定義キーを参照します。例えば,/OTS/RM/RM1/UAP1のキーを参照させたいプロセスに対しては,環境変数TPRMINFOにUAP1を設定してください。

Oracleを使用する場合の定義

8.4 定義例」を参照してください。

RMERR動作モード /OTS/RM/RMn/set_xa_rmerr_action "abort" | "retry1"

〜<<"abort","retry1"(Cosminexus TPBroker)>>

リソースマネージャに対して発行したXA関数がXAER_RMERR(-3)でリターンしたときのTPBrokerの処理を選択します。この定義は,リソースマネージャごとに定義してください。また,各リソースマネージャに対して定義できるパラメタについては各リソースマネージャとの連携手順に従ってください。

  • "abort"

    XA関数がエラーリターンしたプロセスを異常終了させます。

  • "retry1"

    即座にxa_closeおよびxa_open関数を発行後,エラーとなったXA関数を再発行します。再発行したXA関数の結果が再度エラーとなった場合は,そのままエラーは無視,xa_open関数のエラーが発生した場合はプロセスを異常終了させます。また,このリトライはxa_start,xa_prepare,xa_forget関数に対して行われます。

現在この定義によるリトライの指定はset_xa_open_scopeが"thread"のリソースマネージャに対してだけ有効です。マルチスレッドライブラリ使用時にset_xa_open_scopeに"thread"を指定可能なリソースマネージャには,"thread"を指定してください。なお,set_xa_open_scopeに"process"を指定したリソースマネージャに対してこの定義のリトライ指定を行った場合は定義を無視して"abort"とみなします。

RMFAIL動作モード /OTS/RM/RMn/set_xa_rmfail_action "abort" | "retry1"

〜<<"abort","retry1"(Cosminexus TPBroker)>>

リソースマネージャに対して発行したXA関数がXAER_RMFAIL(-7)でリターンしたときのTPBrokerの処理を選択します。この定義は,リソースマネージャごとに定義してください。また,各リソースマネージャに対して定義可能なパラメタについては各リソースマネージャとの連携手順に従ってください。

  • "abort"

    XA関数がエラーリターンしたプロセスを異常終了させます。

  • "retry1"

    即座にxa_open関数を発行後,エラーとなったXA関数を再発行します。再発行したXA関数の結果が再度エラーとなった場合は,そのままエラーとして処理を続行します。ただし,処理が続行できない場合はプロセスを異常終了させることがあります。xa_closeおよびxa_open関数の発行処理ではxa_close関数のエラーは無視,xa_open関数のエラーが発生した場合はプロセスを異常終了させます。また,このリトライはxa_start,xa_prepare,xa_commit,xa_rollback,xa_forget関数に対して行われます。

現在この定義によるリトライの指定はset_xa_open_scopeが"thread"のリソースマネージャに対してだけ有効です。マルチスレッドライブラリ使用時にset_xa_open_scopeに"thread"を指定可能なリソースマネージャには,"thread"を指定してください。なお,set_xa_open_scopeに"process"を指定したリソースマネージャに対してこの定義のリトライ指定を行った場合は定義を無視して"abort"とみなします。