1.9. Transactionサービス

Transactionサービス(JTA)に関する設定について説明します。

Transactionサービスに関するコンフィグレーションの設定、および稼動中のトランザクション情報の取得は、基本的には統合運用管理ツール、およびotxadminコマンドを使い、MOを経由して行いますが、いくつかTransactionサービス専用のコマンドも提供しています。前者については次に記述します。コマンドについての詳細は「運用コマンドリファレンスマニュアル」をご参照ください。

また、Transactionサービスでは、実行中のトランザクションに障害が発生した際の復旧処理を行う機能(Recovery Coordination Service:RCS)を提供しています。RCSによるトランザクションの復旧を行うために必要となる、データベースやコネクタリソースの情報定義もここで実施します。

1.9.1. Transactionサービス全般の設定項目・設定方法

Transactionサービスの設定項目については全てMO化されています。項目の設定方法については「1.1. 各サービスの属性」を参照してください。

補足:

設定された属性は以下のディレクトリ配下に格納されます。

${INSTANCE_ROOT}/config/persistent-mbean/transactionservice

このファイルが存在しない場合にドメインを起動すると、Transactionサービスの設定内容は全て既定値で動作します。このファイルが存在する場合にドメインを再起動した場合は、その値がTransactionサービスの設定内容として使用されます。このファイルの内容を手で書き換えることはしないでください。

Transactionサービスで使用する構成情報設定ファイル

Transactionサービスでは、内部で使用するための構成情報設定ファイル、および実行中のトランザクションの状態などを「${INSTANCE_ROOT}/config/TS」ディレクトリにおいています。本ディレクトリ、およびその配下のファイルの削除はしないでください。トランザクションの結果に矛盾が生じる可能性があります。また内容を直接修正することもしないでください。

1.9.2. トランザクション情報の表示

各トランザクションに関する情報を管理するMOの種別は「TSTxInfo」、MOの名前は「トランザクション識別子」となります。

統合運用管理ツールでは、ツリーの「<ドメイン名>」−「アプリケーションサーバ」−「Transactionサービス」−「Transaction情報」−「トランザクション識別子」をクリックすると、トランザクションの状態や識別子名などが右側に表示されます。また、コマンドで各項目を参照するには「server.transactionservice.tstxlist.<トランザクション識別子>」を使用します。例えばトランザクション識別子が「0209210086910000」のトランザクションの場合、「server.transactionservice.tstxlist. 0209210086910000」になります。

コマンドによる項目の参照

項目の参照には、以下のgetコマンドを使用してください。

get server.transactionservice.tstxlist.<トランザクション識別子>.attribute-name

項目の設定

設定可能な項目はありません。

1.9.3. Transactionサービスに関する設定

以下はMOで設定可能トランザクションサービス設定項目の一覧です。

Dottedname : server.transactionservice

表1.9.3-1
項目
[属性名: attribute-name]
説 明 既定値
RCS(C++)ポート番号
[rcs-cpp-port]
C++アプリケーションで動作するトランザクションを管理するプロセス(C++版RCS)が使用するポート番号です。設定可能範囲は1〜65,535です。また一度決定した番号を変えると未完了トランザクションの復旧が失敗することがありますので注意してください。ポート番号を変更する場合は、復旧中のトランザクションが存在しない状態で実施してください。「rcs-cpp-startup」をtrueにした場合は必ず指定する必要があります。なお、Expressでは使われない項目です。
この項目の変更はTransactionサービスの再起動後から有効となります。
5965
C++ AP用のRCSを自動起動する
[rcs-cpp-startup]
C++版RCSプロセスをTransactionサービス起動時に自動的に起動するか指定します。 C++アプリケーションでTransactionサービス(OTS)を利用したトランザクション管理を実施する場合はチェックしてください。
なお、Expressではチェックできません。
この項目の変更はTransactionサービスの再起動後から有効となります。
false (自動起動しない)
Java AP用のRCSを自動起動する
[rcs-java-startup]
Java版RCSプロセスをTransactionサービス起動時に自動的に起動するか指定します。 Java アプリケーションでJTAやTransactionサービス(OTS) を利用したトランザクション管理を実施する場合はチェックしてください。
なお、Expressではチェックできません。
この項目の変更はTransactionサービスの再起動後から有効となります。
true (自動起動する)
クライアントトランザクションを動作
[rcs-proxy-startup]
クライアントアプリケーション上で分散トランザクションを開始し、データベースの更新を行う場合はチェックしてください。これによってクライアントアプリケーション障害時に実行中だったトランザクションの復旧をTransactionサービスで自動的に実施します。
この項目の変更はTransactionサービスの再起動後から有効となります。
false (自動起動しない)
トレース情報出力先ディレクトリ
[trace-file-path]
Transactionサービスに関連するプロセスによって出力されるトレースファイルの出力先ディレクトリ名です。ファイルは3種類存在しますが、ファイルごとに出力先を変えることはできません。またファイル名自体を変更することもできません。
この項目の変更はRCSプロセスについてはTransactionサービスの再起動後から、AP上で動作するTransactionサービス機能については設定直後に起動したものから有効となります。
ディレクトリは存在するものを指定してください。
${INSTANCE_ROOT}
/logs/TS
トレースファイルサイズ
[trace-size]
Transactionサービスで出力するトレースファイルのサイズです。設定可能範囲は128〜512,000(KB)です。ファイルは3種類存在しますが、ファイルごとにサイズを変えることはできず、変更は3ファイル全てに適用されます。
この項目の変更はRCSプロセスについてはTransactionサービスの再起動後から、AP上で動作するTransactionサービス機能については設定直後に起動したものから有効となります。
1024(KB)
トレースレベル
[trace-level]
Transaction サービスで出力するトレースのレベルです。設定可能範囲は0(エラーレベル)〜5(デバッグレベル)です。この項目の変更は設定直後に有効となります。なおファイルは3種類存在しますが、ファイルごとにレベルを変えることはできず、変更は3ファイル全てに適用されます。 2
トレースファイル初期化
[trace-init]
Transactionサービス開始時にトレースファイルの内容を初期化するかどうかです。"true"あるいは"false"を指定します。ファイルは3種類存在しますが、ファイルごとに属性を変えることはできず、変更は3ファイル全てに適用されます。
この項目の変更は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(秒)
永続ファイルのサイズ
[persistent-file-size]
永続ファイルのサイズ(Rcm*.dat/Tx*.dat/database*.dat)を指定します。
設定可能範囲は1024〜2,097,151(KB)です。
1024(KB)

Dottedname : server.transactionservice.tstxlist

表1.9.3-2
項目
[属性名: attribute-name]
説 明 既定値
トランザクション情報採取レベル
[monitor-level]
Transactionサービスに関する統計情報採取レベルです。ここでは参照のみ可能です。
設定については、統合運用管理ツールでは「モニタリングサービス」- 「モジュールモニタリングレベル」ツリーをクリックした際に右側に表示される、「transactionserviceモニタリングレベル」で行うことができます。otxadminコマンドでも設定可能ですが、方法については「ドメイン構築・基本設定ガイド > 3. ドメイン > 3.9. 統計情報の取得」を参照してください。
この項目の変更は設定直後から有効となります。
0(モニタ情報を採取しない)

Dottedname : server.transactionservice.tstxlist.<トランザクション識別子>

これらの値は全て参照のみ可能です。

表1.9.3-3
項目
[属性名: attribute-name]
説 明 既定値
トランザクション識別子[stxid] Transactionサービスの内部でそれぞれのトランザクションを一意に識別するために払い出した数字です。 無し
状態[status] トランザクションの状態を表します。それぞれの詳細については「リファレンス集 開発編(共通) > 4. CORBA > トランザクションの状態一覧」をご参照ください。 無し
開始時間[starttime] トランザクションを開始した日時です。 無し
Otid[otid] DBMS側でトランザクションを管理するのに使われる一意の識別子です。 無し
所有者[owner] トランザクションの管理を行っているのがどこかをあらわします。「Active」あるいは「Recover」のいずれかが表示されます。通常トランザクションはAPの内部で管理されます。その場合は「Active」と表示されます。ただしトランザクションが完了しないうちにAPが停止した場合、その管理がRCSプロセスに移管され、完了処理を自動的に継続します。この場合「Recover」と表示されます 無し

1.9.4. リソースを管理するためのコマンド

2フェーズコミットの途中で障害が発生した場合、Transactionサービスは、トランザクションのリカバリ処理を実行します。リカバリ処理で使用するデータベースやコネクタリソースの情報を、Transactionサービスのリソースとして定義します。

Javaアプリケーション用のリソース

JDBCデータソースやコネクタリソース、JMSのコネクションファクトリリソースへの参照情報(JNDIサーバへの登録名と、上書き設定するユーザ名およびパスワード)を、TransactionサービスのJDBCリソースまたはJCAリソースに設定します。

JDBCリソースは、「JDBCデータソースのテスト」操作を行った時や、トランザクション実行時に自動的に生成されます。自動生成されたJDBCリソースをそのまま使用する場合は、「セットアップガイド > 2. インストール > 2.3. インストール後の作業 > 2.3.6. データベースを使用するための準備作業 (Java)」に記載されているトランザクションのリカバリを行うための権限を、JDBCデータソースの定義時に指定したユーザに直接付与してください。リカバリを行う時にだけ特権をもったユーザを使用する場合は、自動生成されたJDBCリソースのユーザ名とパスワードを書き換えてください。

C++アプリケーション用のリソース

TransactionサービスのC++ XAリソースでは、トランザクションのリカバリを行うためだけでなく、アプリケーションからデータベースに接続するための接続情報を設定します。また、アプリケーションから、Oracleのオープン文字列中のユーザ名を使い分ける場合には、オプションとして、AP専用のリソース定義を行うことができます。

TransactionサービスのC++用のリソース定義を行った後は、そのリソースの名前を、「tpsystem.applicationGroups.アプリケーショングループ名.processGroups.プロセスグループ名」で、Transaction Serviceのデータベース識別名として指定します。

これらのリソースについては、以降のMOで設定、または、参照することができます。

JDBCリソース

MO名は、「jdbc-resource.resource-name」です。resource-nameは、JDBCデータソースの名前と同じです。

コマンドで各項目を参照・設定する際は、「server.transaction.service.resources.jdbc-resource.resource-name」という名前を指定します。また、統合運用管理ツールでは、ドメインツリーの「WebOTXAdmin[ホスト名].ドメイン名.server.transactionservice.jdbc-resource.resource-name」を選択します。項目の設定方法については「1.1. 各サービスの属性」を参照してください。

表1.9.4-1
属性名[attribute-name] 説 明 既定値
リソース名[name] JDBCデータソースの参照定義の名前(JDBCデータソースのJNDI名)です。
NULL文字を含め、最大256文字の名前を指定してください。
データソースの種類[dataSourceType]が"JDBC"の場合、そのJDBCデータソースをJDBCリソースとして登録しないでください。
なし
接続状態[status] データベースとの接続状態です。
値は、Opened、Closing、Closedのいずれかになります。トランザクションのリカバリ処理を実行中の場合にstopオペレーションを実行すると、リカバリ処理が完了するまでClosingになります。
なし
ユーザ名[user-name] トランザクションのリカバリを行うための、特別な権限を持ったユーザ名です。 なし
パスワード[password] データベースと接続するためのパスワードです。 なし
JCAリソース

MO名は、「jca-resource.resource-name」です。resource-nameは、コネクタリソースまたはJMSのコネクションファクトリリソースの名前と同じです。

コマンドで各項目を参照・設定する際は、「server.transaction.service.resources.jca-resource.resource-name」という名前を指定します。また、統合運用管理ツールでは、ドメインツリーの「WebOTXAdmin[ホスト名].ドメイン名.server.transactionservice.jca-resource.resource-name」を選択します。項目の設定方法については「1.1. 各サービスの属性」を参照してください。

表1.9.4-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.security.PasswordCredentialクラスを使用します。JMSリソースを使用する場合は、ConnectionRequestInfoクラスを使用しません。 false
ConnectionRequestInfo
クラス名[con-req-info-name]
コネクタリソースとの接続情報を格納するためのConnectionRequestInfoクラスの名前です。コネクタリソースの実装クラスを使用する必要がある場合に、そのクラス名を指定してください。 なし
C++ XAリソース

MO名は、「cppxa-resource.resource-name」です。resource-nameは、C++ XAリソースの名前です。

コマンドで各項目を参照・設定する際は、「server.transaction.service.resources.cppxa-resource.resource-name」という名前を指定します。また、統合運用管理ツールでは、ドメインツリーの「WebOTXAdmin[ホスト名].ドメイン名.server.transactionservice.cppxa-resource.resource-name」を選択します。項目の設定方法については「1.1. 各サービスの属性」を参照してください。

表1.9.4-3
属性名[attribute-name] 説 明 既定値
リソース名[name] C++ XAリソースの名前です。
NULL文字を含め、最大16文字の名前を指定してください。
なし
接続状態[status] データベースとの接続状態です。
値は、Opened、Closing、Closedのいずれかになります。トランザクションのリカバリ処理を実行中の場合にstopオペレーションを実行すると、リカバリ処理が完了するまでClosingになります。
なし
XAリソースタイプ
[xa-resource-type]
データベースまたはメッセージキューベンダが提供するインタフェースの種別を表わす文字列です。値は、次のいずれかになります。

Oracle_XA12C
Oracle 12cのXAインタフェースを使用します。

Oracle_XA11G
Oracle 11gのXAインタフェースを使用します。

Oracle_XA10G
Oracle 10gのXAインタフェースを使用します。

MsSql_XA
Microsoft SQL ServerのXAインタフェースを使用します。

IBMMq_XA
IBM WebSphere MQのXAインタフェースを使用します。


XAインタフェースでは、アプリケーションのメソッドが呼び出される際に、事前に、データベース側のトランザクションが開始されます。
なし
オープン文字列
[open-string]
データベースに接続するために使用する文字列です。
Oracleを使用する場合は、オープン文字列を指定します。オープン文字列の詳細は、Oracleのリファレンスマニュアルを参照してください。IBM WebSphere MQを使用する場合は、キュー管理プログラム名を指定します。Microsoft SQL Serverを使用する場合は、指定しません。
なし
クローズ文字列
[close-string]
クローズ文字列を指定する必要はありません。 なし
AP用C++ XAリソース

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」を選択します。項目の設定方法については「1.1. 各サービスの属性」を参照してください。

表1.9.4-4
属性名[attribute-name] 説 明 既定値
リソース名[name] AP用C++ XAリソースの名前です。
NULL文字を含め、最大16文字の名前を指定してください。
なし
XAリソースタイプ
[xa-resource-type]
データベースまたはメッセージキューベンダが提供するインタフェースの種別を表わす文字列です。値は、次のいずれかになります。

Oracle_XA12C
Oracle 12cのXAインタフェースを使用します。

Oracle_XA11G
Oracle 11gのXAインタフェースを使用します。

Oracle_XA10G
Oracle 10gのXAインタフェースを使用します。

なし
オープン文字列
[open-string]
データベースに接続するために使用する文字列です。
Oracleを使用する場合は、オープン文字列を指定します。オープン文字列の詳細は、Oracleのリファレンスマニュアルを参照してください。
なし
クローズ文字列
[close-string]
クローズ文字列を指定する必要はありません。 なし