Transactionサービス(JTA)に関する設定について説明します。
Transactionサービスに関するコンフィグレーションの設定、および稼動中のトランザクション情報の取得は、基本的には統合運用管理ツール、およびotxadminコマンドを使い、MOを経由して行いますが、いくつかTransactionサービス専用のコマンドも提供しています。前者については次に記述します。コマンドについての詳細は「運用コマンドリファレンスマニュアル」をご参照ください。
また、Transactionサービスでは、実行中のトランザクションに障害が発生した際の復旧処理を行う機能(Recovery Coordination Service:RCS)を提供しています。RCSによるトランザクションの復旧を行うために必要となる、データベースやコネクタリソースの情報定義もここで実施します。
Transactionサービスの設定項目については全てMO化されています。項目の設定方法については「2.各サービスの属性の設定」を参照してください。
補足:
設定された属性は以下のディレクトリ配下に格納されます。
${INSTANCE_ROOT}/config/persistent-mbean/transactionservice
このファイルが存在しない場合にドメインを起動すると、Transactionサービスの設定内容は全て既定値で動作します。このファイルが存在する場合にドメインを再起動した場合は、その値がTransactionサービスの設定内容として使用されます。このファイルの内容を手で書き換えることはしないでください。
Transactionサービスでは、内部で使用するための構成情報設定ファイル、および実行中のトランザクションの状態などを「${INSTANCE_ROOT}/config/TS」ディレクトリにおいています。本ディレクトリ、およびその配下のファイルの削除はしないでください。トランザクションの結果に矛盾が生じる可能性があります。また内容を直接修正することもしないでください。
各トランザクションに関する情報を管理するMOの種別は「TSTxInfo」、MOの名前は「トランザクション識別子」となります。
統合運用管理ツールでは、ツリーの「<ドメイン名>」−「アプリケーションサーバ」−「Transactionサービス」−「Transaction情報」−「トランザクション識別子」をクリックすると、トランザクションの状態や識別子名などが右側に表示されます。また、コマンドで各項目を参照するには「server.transactionservice.tstxlist.<トランザクション識別子>」を使用します。例えばトランザクション識別子が「0209210086910000」のトランザクションの場合、「server.transactionservice.tstxlist. 0209210086910000」になります。
項目の参照には、以下のgetコマンドを使用してください。
get server.transactionservice.tstxlist.<トランザクション識別子>.attribute-name
設定可能な項目はありません。
以下はMOで設定可能トランザクションサービス設定項目の一覧です。
Dottedname : server.transactionservice
| 項目 [属性名: attribute-name] |
説 明 | 既定値 |
|---|---|---|
| RCS(C++)ポート番号 [rcs-cpp-port] |
C++アプリケーションで動作するトランザクションを管理するプロセス(C++版RCS)が使用するポート番号です。設定可能範囲は1〜65,535です。また一度決定した番号を変えると未完了トランザクションの復旧が失敗することがありますので注意してください。ポート番号を変更する場合は、復旧中のトランザクションが存在しない状態で実施してください。「rcs-cpp-startup」をtrueにした場合は必ず指定する必要があります。なお、Web Edition、およびStandard-J Editionでは使われない項目です。 この項目の変更はTransactionサービスの再起動後から有効となります。 |
5965 |
| C++ AP用のRCSを自動起動する [rcs-cpp-startup] |
C++版RCSプロセスをTransactionサービス起動時に自動的に起動するか指定します。 C++アプリケーションでTransactionサービス(OTS)を利用したトランザクション管理を実施する場合はチェックしてください。 なお、Web Edition、およびStandard-J Editionではチェックできません。 この項目の変更はTransactionサービスの再起動後から有効となります。 |
true(自動起動する) |
| クライアントトランザクションを動作 [rcs-proxy-startup] |
クライアントアプリケーション上で分散トランザクションを開始し、データベースの更新を行う場合はチェックしてください。これによってクライアントアプリケーション障害時に実行中だったトランザクションの復旧をTransactionサービスで自動的に実施します。なお、Web Edition、ではチェックできません。 この項目の変更はTransactionサービスの再起動後から有効となります。 |
false (自動起動しない) |
| トレース情報出力先ディレクトリ [trace-file-path] |
Transactionサービスに関連するプロセスによって出力されるトレースファイルの出力先ディレクトリ名です。ファイルは3種類(Web Editionでは1種類)存在しますが、ファイルごとに出力先を変えることはできません。またファイル名自体を変更することもできません。 この項目の変更はRCD/RCSプロセスについてはTransactionサービスの再起動後から、AP上で動作するTransactionサービス機能については設定直後に起動したものから有効となります。 ディレクトリは存在するものを指定してください。 |
${INSTANCE_ROOT} /logs/TS |
| トレースファイルサイズ [trace-size] |
Transactionサービスで出力するトレースファイルのサイズです。設定可能範囲は1〜512,000(KB)です。ファイルは3種類(Web Editionでは1種類)存在しますが、ファイルごとにサイズを変えることはできず、変更は3ファイル全てに適用されます。 この項目の変更はRCD/RCSプロセスについてはTransactionサービスの再起動後から、AP上で動作するTransactionサービス機能については設定直後に起動したものから有効となります。 |
1024(KB) |
| トレースレベル [trace-level] |
Transaction サービスで出力するトレースのレベルです。設定可能範囲は1(エラーレベル)〜5(デバッグレベル)です。この項目の変更は設定直後に有効となります。なおファイルは3種類(Web Editionでは1種類)存在しますが、ファイルごとにレベルを変えることはできず、変更は3ファイル全てに適用されます。 | 2 |
| トレースファイル初期化を行う [trace-init] |
Transactionサービス開始時にトレースファイルの内容を初期化するかどうかです。"true"あるいは"false"を指定します。ファイルは3種類(Web Editionでは1種類)存在しますが、ファイルごとに属性を変えることはできず、変更は3ファイル全てに適用されます。 この項目の変更はRCD/RCSプロセスについてはTransactionサービスの再起動後から、AP上で動作するTransactionサービス機能については設定直後に起動したものから有効となります。 |
false (初期化しない) |
| コミットリトライ回数 [retry-num] |
トランザクションのコミットが失敗した際のリトライ回数です。この回数分リトライを実施しても状況が変わらない場合、トランザクションサービスが自動的にトランザクションの状態をヒューリスティックに設定します。設定可能範囲は0〜32767回です。 この項目の変更は設定直後に有効となります。 |
5(回) |
| コミットリトライ間隔 [retry-interval] |
コミットリトライの時間間隔です。設定可能範囲は2〜32767秒です。 この項目の変更は設定直後に有効となります。 |
600(秒) |
| トランザクションタイムアウト時間 [tx-timeout] |
トランザクションのタイムアウト時間です。 トランザクションを開始してからこの時間が経過しても完了していない場合はトランザクションサービスが自動的にロールバック処理を実施します。設定可能範囲は0〜32767秒です。また0秒を指定した場合、タイムアウトは発生しません。 この項目の変更は設定直後に有効となります。 |
600(秒) |
| トランザクション復旧開始時間 [recover-start-timer] |
復旧したトランザクションについて、復旧が完了してから自動的に完了処理を開始するまでの時間を設定します。設定可能範囲は0〜32767秒です。 この項目の変更は設定直後に有効となります。 |
60(秒) |
| リソース復旧開始時間 [recovery-time] |
障害などによって、トランザクションマネージャからリソースへの指示(commit,rollback,forget要求)が出されない場合に、リソースが自動的に復旧を開始するまでの時間を指定します。 設定可能範囲は0〜32767秒です。0はタイムアウトなしを意味します。 この項目の変更は設定直後に有効となります。 |
60(秒) |
| リソース復旧間隔 [recovery-interval] |
リソースが復旧に失敗した場合に、次に復旧処理をリトライするまでの間隔を指定します。 設定可能範囲は0〜32767秒、既定値は2秒です。 この項目の変更は設定直後に有効となります。 |
2(秒) |
Dottedname : server.transactionservice.tstxlist
| 項目 [属性名: attribute-name] |
説 明 | 既定値 |
|---|---|---|
| トランザクション情報採取レベル [monitor-level] |
Transactionサービスに関する統計情報採取レベルです。ここでは参照のみ可能です。 設定については、統合運用管理ツールでは「モニタリングサービス」- 「モジュールモニタリングレベル」ツリーをクリックした際に右側に表示される、「transactionserviceモニタリングレベル」で行うことができます。otxadminコマンドでも設定可能ですが、方法については「運用編(ドメインの運用) 統計情報の取得」を参照してください。 この項目の変更は設定直後から有効となります。 |
0(モニタ情報を採取しない) |
Dottedname : server.transactionservice.tstxlist.<トランザクション識別子>
これらの値は全て参照のみ可能です。
| 項目 [属性名: attribute-name] |
説 明 | 既定値 |
|---|---|---|
| トランザクション識別子[stxid] | Transactionサービスの内部でそれぞれのトランザクションを一意に識別するために払い出した数字です。 | 無し |
| 状態[status] | トランザクションの状態を表します。それぞれの詳細については「トランザクションの状態一覧」をご参照ください。 | 無し |
| 開始時間[starttime] | トランザクションを開始した日時です。 | 無し |
| Otid[otid] | DBMS側でトランザクションを管理するのに使われる一意の識別子です。 | 無し |
| 所有者[owner] | トランザクションの管理を行っているのがどこかをあらわします。「Active」あるいは「Recover」のいずれかが表示されます。通常トランザクションはAPの内部で管理されます。その場合は「Active」と表示されます。ただしトランザクションが完了しないうちにAPが停止した場合、その管理がRCSプロセスに移管され、完了処理を自動的に継続します。この場合「Recover」と表示されます | 無し |
2フェーズコミットの途中で障害が発生した場合、Transactionサービスは、トランザクションのリカバリ処理を実行します。リカバリ処理で使用するデータベースやコネクタリソースの情報を、Transactionサービスのリソースとして定義します。
JDBCデータソースやコネクタリソース、JMSのコネクションファクトリリソースへの参照情報(JNDIサーバへの登録名と、上書き設定するユーザ名およびパスワード)を、TransactionサービスのJDBCリソースまたはJCAリソースに設定します。
JDBCリソースは、「JDBCデータソースのテスト」操作を行った時や、トランザクション実行時に自動的に生成されます。自動生成されたJDBCリソースをそのまま使用する場合は、「データベースを使用するための準備作業(Java)」に記載されているトランザクションのリカバリを行うための権限を、JDBCデータソースの定義時に指定したユーザに直接付与してください。リカバリを行う時にだけ特権をもったユーザを使用する場合は、自動生成されたJDBCリソースのユーザ名とパスワードを書き換えてください。
TransactionサービスのC++ XAリソースでは、トランザクションのリカバリを行うためだけでなく、アプリケーションからデータベースに接続するための接続情報を設定します。また、アプリケーションから、Oracleのオープン文字列中のユーザ名を使い分ける場合には、オプションとして、AP専用のリソース定義を行うことができます。
TransactionサービスのC++用のリソース定義を行った後は、そのリソースの名前を、「tpsystem.applicationGroups.アプリケーショングループ名.processGroups.プロセスグループ名」で、Transaction Serviceのデータベース識別名として指定します。
これらのリソースについては、以降のMOで設定、または、参照することができます。
MO名は、「jdbc-resource.resource-name」です。resource-nameは、JDBCデータソースの名前と同じです。
コマンドで各項目を参照・設定する際は、「server.transaction.service.resources.jdbc-resource.resource-name」という名前を指定します。また、統合運用管理ツールでは、ドメインツリーの「WebOTXAdmin[ホスト名].ドメイン名.server.transactionservice.jdbc-resource.resource-name」を選択します。項目の設定方法については「2.各サービスの属性の設定」を参照してください。
| 属性名[attribute-name] | 説 明 | 既定値 |
|---|---|---|
| リソース名[name] | JDBCデータソースの参照定義の名前(JDBCデータソースのJNDI名)です。 NULL文字を含め、最大256文字の名前を指定してください。 データソースの種類[dataSourceType]が"JDBC"の場合、そのJDBCデータソースをJDBCリソースとして登録しないでください。 |
なし |
| 接続状態[status] | データベースとの接続状態です。 値は、Opened、Closing、Closedのいずれかになります。トランザクションのリカバリ処理を実行中の場合にstopオペレーションを実行すると、リカバリ処理が完了するまでClosingになります。 |
なし |
| ユーザ名[user-name] | トランザクションのリカバリを行うための、特別な権限を持ったユーザ名です。 | なし |
| パスワード[password] | データベースと接続するためのパスワードです。 | なし |
MO名は、「jca-resource.resource-name」です。resource-nameは、コネクタリソースまたはJMSのコネクションファクトリリソースの名前と同じです。
コマンドで各項目を参照・設定する際は、「server.transaction.service.resources.jca-resource.resource-name」という名前を指定します。また、統合運用管理ツールでは、ドメインツリーの「WebOTXAdmin[ホスト名].ドメイン名.server.transactionservice.jca-resource.resource-name」を選択します。項目の設定方法については「2.各サービスの属性の設定」を参照してください。
| 属性名[attribute-name] | 説 明 | 既定値 |
|---|---|---|
| リソース名[name] | コネクタリソースまたはJMSリソースの参照定義の名前(該当リソースのJNDI名)です。 NULL文字を含め、最大256文字の名前を指定してください。 |
なし |
| 接続状態[status] | コネクタリソースとの接続状態です。 値は、Opened、Closing、Closedのいずれかになります。トランザクションのリカバリ処理を実行中の場合にstopオペレーションを実行すると、リカバリ処理が完了するまでClosingになります。 |
なし |
| ユーザ名[user-name] | コネクタリソースと接続するためのユーザ名です。 | なし |
| パスワード[password] | コネクタリソースと接続するためのパスワードです。 | なし |
| ConnectionRequestInfoの使用有無 [use-con-req-info] |
コネクタリソースとの接続で、javax.resource.spi.ConnectionRequestInfoクラスを使用するかどうかを表わすブール値です。デフォルトでは、javax.resource.spi.cecurity.PasswordCredentialクラスを使用します。JMSリソースを使用する場合は、ConnectionRequestInfoクラスを使用しません。 | false |
| ConnectionRequestInfo クラス名[con-req-info-name] |
コネクタリソースとの接続情報を格納するためのConnectionRequestInfoクラスの名前です。コネクタリソースの実装クラスを使用する必要がある場合に、そのクラス名を指定してください。 | なし |
MO名は、「cppxa-resource.resource-name」です。resource-nameは、C++ XAリソースの名前です。
コマンドで各項目を参照・設定する際は、「server.transaction.service.resources.cppxa-resource.resource-name」という名前を指定します。また、統合運用管理ツールでは、ドメインツリーの「WebOTXAdmin[ホスト名].ドメイン名.server.transactionservice.cppxa-resource.resource-name」を選択します。項目の設定方法については「2.各サービスの属性の設定」を参照してください。
| 属性名[attribute-name] | 説 明 | 既定値 |
|---|---|---|
| リソース名[name] | C++ XAリソースの名前です。 NULL文字を含め、最大16文字の名前を指定してください。 |
なし |
| 接続状態[status] | データベースとの接続状態です。 値は、Opened、Closing、Closedのいずれかになります。トランザクションのリカバリ処理を実行中の場合にstopオペレーションを実行すると、リカバリ処理が完了するまでClosingになります。 |
なし |
| XAリソースタイプ [xa-resource-type] |
データベースまたはメッセージキューベンダが提供するインタフェースの種別を表わす文字列です。値は、次のいずれかになります。 Oracle_XA10G : Oracle 10gのXAインタフェースを使用します。 Oracle_XA91 : Oracle 9iのXAインタフェースを使用します。 Oracle_XA81 : Oracle 8iのXAインタフェースを使用します。 MsSql_XA : Microsoft SQL ServerのXAインタフェースを使用します。 IBMMq_XA : IBM WebSphere MQのXAインタフェースを使用します。 Oracle_AX10G : Oracle 10gのAXインタフェースを使用します。 Oracle_AX91 : Oracle 9iのAXインタフェースを使用します。 Oracle_AX81 : Oracle 8iのAXインタフェースを使用します。 XAインタフェースでは、アプリケーションのメソッドが呼び出される際に、事前に、データベース側のトランザクションが開始されます。これに対して、AXインタフェースでは、アプリケーションからSQL命令を実行した際にトランザクションが開始されます。 アプリケーションにSQL命令を実行しないメソッドがある場合や、メソッド毎に使用するデータベースが異なる場合には、AXインタフェースを利用した方が効率的です。 |
なし |
| オープン文字列 [open-string] |
データベースに接続するために使用する文字列です。 Oracleを使用する場合は、オープン文字列を指定します。オープン文字列の詳細は、Oracleのリファレンスマニュアルを参照してください。IBM WebSphere MQを使用する場合は、キュー管理プログラム名を指定します。Microsoft SQL Serverを使用する場合は、指定しません。 |
なし |
| クローズ文字列 [close-string] |
クローズ文字列を指定する必要はありません。 | なし |
MO名は、「cppxa-ap-resource.parent-name.resource-name」です。parent-nameは、上位のC++ XAリソースの名前です。また、resource-nameは、AP用C++ XAリソースの名前です。
コマンドで各項目を参照・設定する際は、「server.transaction.service.resources.cppxa-resource.parent-name.resource-name」という名前を指定します。また、統合運用管理ツールでは、ドメインツリーの「WebOTXAdmin[ホスト名].ドメイン名.server.transactionservice.cppxa-resource.parent-name.resource-name」を選択します。項目の設定方法については「2.各サービスの属性の設定」を参照してください。
| 属性名[attribute-name] | 説 明 | 既定値 |
|---|---|---|
| リソース名[name] | AP用C++ XAリソースの名前です。 NULL文字を含め、最大16文字の名前を指定してください。 |
なし |
| XAリソースタイプ [xa-resource-type] |
データベースまたはメッセージキューベンダが提供するインタフェースの種別を表わす文字列です。値は、次のいずれかになります。 Oracle_XA10G : Oracle 10gのXAインタフェースを使用します。 Oracle_XA91 : Oracle 9iのXAインタフェースを使用します。 Oracle_XA81 : Oracle 8iのXAインタフェースを使用します。 Oracle_AX10G : Oracle 10gのAXインタフェースを使用します。 Oracle_AX91 : Oracle 9iのAXインタフェースを使用します。 Oracle_AX81 : Oracle 8iのAXインタフェースを使用します。 |
なし |
| オープン文字列 [open-string] |
データベースに接続するために使用する文字列です。 Oracleを使用する場合は、オープン文字列を指定します。オープン文字列の詳細は、Oracleのリファレンスマニュアルを参照してください。IBM WebSphere MQを使用する場合は、キュー管理プログラム名を指定します。Microsoft SQL Serverを使用する場合は、指定しません。 |
なし |
| クローズ文字列 [close-string] |
クローズ文字列を指定する必要はありません。 | なし |