第21章 トランザクションサブシステム
21.1. トランザクションサブシステムの設定
21.1.1. トランザクション設定の概要
次の手順は、JBoss EAP 6 のトランザクションサブシステムを設定する方法を示しています。
21.1.2. トランザクションマネージャーの設定
default 以外のプロファイルを修正したい場合は、以下の方法で手順とコマンドを修正する必要があることがあります。
例のコマンドに関する注意点
- 管理コンソールの場合、
defaultプロファイルは最初のコンソールログイン時に選択されるものです。異なるプロファイルでトランザクションマネージャーの設定を修正する必要がある場合は、defaultの代わりに使用しているプロファイルを選択してください。同様に、例の CLI コマンドのdefaultプロファイルを使用しているプロファイルに置き換えてください。 - スタンドアロンサーバーを使用する場合、存在するプロファイルは 1 つのみです。特定のプロファイルを選択する手順は無視してください。CLI コマンドでは、例のコマンドの
/profile=default部分を削除してください。
注記
transactions サブシステムが有効でなくてはなりません。これは、デフォルトで有効になっており、他の多くのサブシステムが適切に機能するために必要なため、無効にする可能性は大変低くなります。
Web ベースの管理コンソールを使用して TM を設定するには、画面上部の Configuration タブを選択します。管理対象ドメインを使用する場合、左上にある Profile 選択ボックスから適切なプロファイルを選択します。Container メニューを展開して、Transactions を選択します。
管理 CLI では、一連のコマンドを使用して TM を設定できます。プロファイル default の管理対象ドメインの場合、コマンドはすべて /profile=default/subsystem=transactions/ で始まり、スタンドアロンサーバーの場合は /subsystem=transactions で始まります。
重要
表21.1 TM 設定オプション
| オプション | 説明 | CLI コマンド |
|---|---|---|
|
統計の有効化 (Enable Statistics)
|
トランザクションの統計を有効にするかどうかを指定します。統計は Runtime タブの Subsystem Metrics セクションにある管理コンソールで閲覧できます。
| /profile=default/subsystem=transactions/:write-attribute(name=enable-statistics,value=true)
|
|
デフォルトのタイムアウト (Default Timeout)
|
デフォルトのトランザクションタイムアウトです。デフォルトでは
300 秒に設定されています。トランザクションごとにプログラムで上書きできます。
| /profile=default/subsystem=transactions/:write-attribute(name=default-timeout,value=300)
|
|
オブジェクトストアパス (Object Store Path)
|
TM オブジェクトストアがデータを格納するファイルシステムの相対または絶対パスです。デフォルトでは、
object-store-relative-to パラメーターの値に相対的です。
| /profile=default/subsystem=transactions/:write-attribute(name=object-store-path,value=tx-object-store)
|
|
オブジェクトストアパスに相対的 (Object Store Path Relative To)
|
ドメインモデルのグローバルなパス設定を参照します。デフォルト値は、JBoss EAP 6 のデータディレクトリーで、
jboss.server.data.dir プロパティーの値です。デフォルトは、管理対象ドメインの場合は EAP_HOME/domain/data/、スタンドアロンサーバーインスタンスの場合は EAP_HOME/standalone/data/ です。オブジェクトストアの object-store-path TM 属性の値はこのパスに相対的です。
| /profile=default/subsystem=transactions/:write-attribute(name=object-store-relative-to,value=jboss.server.data.dir)
|
|
ソケットバインディング (Socket Binding)
|
ソケットベースのメカニズムを使用する場合に、トランザクションマネージャーの回復およびトランザクション識別子の生成に使用するソケットバインディングの名前を指定します。一意の識別子を生成する詳しい情報は、
process-id-socket-max-ports を参照してください。ソケットバインディングは、管理コンソールの Server タブでサーバーグループごとに指定されます。
| /profile=default/subsystem=transactions/:write-attribute(name=socket-binding,value=txn-recovery-environment)
|
|
リカバリーリスナー (Recovery Listener)
|
トランザクションリカバリのプロセスがネットワークソケットをリッスンするかどうかを指定します。デフォルトは
false です。
| /profile=default/subsystem=transactions/:write-attribute(name=recovery-listener,value=false)
|
表21.2 高度な TM 設定オプション
| オプション | 説明 | CLI コマンド |
|---|---|---|
|
jts
|
Java Transaction Service (JTS) トランザクションを使用するかどうかを指定します。デフォルトは
false で、JTA トランザクションのみを使用します。
| /profile=default/subsystem=transactions/:write-attribute(name=jts,value=false)
|
|
node-identifier
|
トランザクションマネージャーのノード識別子です。このオプションは以下の場合に必要です。
node-identifier は一意である必要があります。複数のノードが同じリソースマネージャーと対話したり、トランザクションオブジェクトストアを共有したりするため、node-identifier は JTA に対しても一意である必要があります。
| /profile=default/subsystem=transactions/:write-attribute(name=node-identifier,value=1)
|
|
process-id-socket-max-ports
|
トランザクションマネージャーは、各トランザクションログに対し一意の識別子を作成します。一意の識別子を生成するメカニズムは 2 種類あります。ソケットベースのメカニズムとプロセスのプロセス識別子をベースにしたメカニズムです。
ソケットベースの識別子の場合、あるソケットを開くと、そのポート番号が識別子用に使用されます。ポートがすでに使用されている場合は、空きのポートが見つかるまで次のポートがプローブされます。
process-id-socket-max-ports は、TM が失敗するまでに試行するソケットの最大値を意味します。デフォルト値は 10 です。
| /profile=default/subsystem=transactions/:write-attribute(name=process-id-socket-max-ports,value=10)
|
|
process-id-uuid
| true に設定すると、プロセス識別子を使用して各トランザクションに一意の識別子を作成します。そうでない場合は、ソケットベースのメカニズムが使用されます。デフォルトは true です。詳細は process-id-socket-max-ports を参照してください。
| /profile=default/subsystem=transactions/:write-attribute(name=process-id-uuid,value=true)
|
|
use-hornetq-store
|
トランザクションログ用に、ファイルベースのストレージの代わりに HornetQ のジャーナルストレージメカニズムを使用します。デフォルトでは無効になっていますが、I/O パフォーマンスが向上します。別々のトランザクションマネージャーで JTS トランザクションを使用することは推奨されません。このオプションの変更を反映するには
shutdown コマンドを使用してサーバーを再起動する必要があります。
| /profile=default/subsystem=transactions/:write-attribute(name=use-hornetq-store,value=false)
|
21.1.3. JTA トランザクションを使用するようにデータソースを設定
ここでは、データソースで Java Transactions API (JTA) を有効にする方法を説明します。
このタスクを続行するには、次の条件を満たしている必要があります。
- お使いのデータベースまたはその他のリソースが JTA をサポートしている必要があります。不明な場合は、データソースまたはリソースの文書を参照してください。
- データベースを作成する必要があります。「管理インターフェースによる非 XA データソースの作成」 を参照してください。
- JBoss EAP 6 を停止します。
- テキストエディターで設定ファイルを直接編集できる権限を持たなければなりません。
手順21.1 JTA トランザクションを使用するようデータソースを設定する
テキストエディターで設定ファイルを開く
JBoss EAP 6 を管理対象ドメインまたはスタンドアロンサーバーで実行するかによって、設定ファイルの場所は異なります。管理対象ドメイン
管理対象ドメインのデフォルトの設定ファイルは、Red Hat Enterprise Linux の場合はEAP_HOME/domain/configuration/domain.xmlにあります。Microsoft Windows サーバーの場合はEAP_HOME\domain\configuration\domain.xmlにあります。スタンドアロンサーバー
スタンドアロンサーバーのデフォルトの設定ファイルは、Red Hat Enterprise Linux の場合はEAP_HOME/standalone/configuration/standalone.xmlにあります。Microsoft Windows サーバーの場合はEAP_HOME\standalone\configuration\standalone.xmlにあります。
お使いのデータソースに対応する
<datasource>タグを探します。データソースのjndi-name属性には作成時に指定した属性が設定されます。たとえば、 ExampleDS データソースは次のようになります。<datasource jndi-name="java:jboss/datasources/ExampleDS" pool-name="H2DS" enabled="true" jta="true" use-java-context="true" use-ccm="true">
jta属性をtrueに設定します。上記のように、jta="true"を<datasource>タグの内容に追加します。設定ファイルを保存します。
設定ファイルを保存しテキストエディターを終了します。JBoss EAP 6 を起動します。
JBoss EAP 6 サーバーを再起動します。
JBoss EAP 6 が起動し、データソースが JTA トランザクションを使用するように設定されます。
21.1.4. XA Datasource の設定
XA Datasource を追加するには、管理コンソールにログインする必要があります。詳細は 「管理コンソールへのログイン」 を参照してください。
新しいデータソースを追加します。
新しいデータソースを JBoss EAP 6 に追加します。「管理インターフェースによる非 XA データソースの作成」 の手順に従いますが、上部の XA Datasource タブをクリックしてください。必要に応じて他のプロパティーを設定します。
データソースパラメーターの一覧は 「データソースのパラメーター」 にあります。
XA Datasource が設定され、使用する準備ができます。
21.1.5. トランザクションログメッセージ
DEBUG ログレベルを使用します。詳細なデバッグでは TRACE ログレベルを使用します。トランザクションロガーの設定に関する詳細は 「トランザクションサブシステムのログ設定」 を参照してください。
TRACE ログレベルに設定すると、トランザクションマネージャーは多くのロギング情報を生成できます。一般的に表示されるメッセージの一部は次のとおりです。他のメッセージが表示されることもあります。
表21.3 トランザクション状態の変更
| トランザクションの開始 |
トランザクションが開始されると、次のコードが実行されます。
com.arjuna.ats.arjuna.coordinator.BasicAction::Begin:1342 tsLogger.logger.trace("BasicAction::Begin() for action-id "+ get_uid());
|
| トランザクションのコミット |
トランザクションがコミットすると、次のコードが実行されます。
com.arjuna.ats.arjuna.coordinator.BasicAction::End:1342 tsLogger.logger.trace("BasicAction::End() for action-id "+ get_uid());
|
| トランザクションのロールバック |
トランザクションがロールバックすると、次のコードが実行されます。
com.arjuna.ats.arjuna.coordinator.BasicAction::Abort:1575 tsLogger.logger.trace("BasicAction::Abort() for action-id "+ get_uid());
|
| トランザクションのタイムアウト |
トランザクションがタイムアウトすると、次のコードが実行されます。
com.arjuna.ats.arjuna.coordinator.TransactionReaper::doCancellations:349 tsLogger.logger.trace("Reaper Worker " + Thread.currentThread() + " attempting to cancel " + e._control.get_uid());
その後、上記のように同じスレッドがトランザクションをロールバックすることが確認できます。
|
21.1.6. トランザクションサブシステムのログ設定
JBoss EAP 6 の他のログ設定に依存せずにトランザクションログの情報量を制御する手順を説明します。主に Web ベースの管理コンソールを用いた手順を説明し、管理 CLI コマンドはその後で説明します。
手順21.2 管理コンソールを使用したトランザクションロガーの設定
ログ設定エリアへの移動
管理コンソールで Configuration タブをクリックします。管理対象ドメインを使用する場合は、左上の Profile 選択ボックスから設定したいサーバープロファイルを選択します。Core メニューを展開して、Logging を選択します。com.arjuna属性を編集します。Log Categories タブを選択します。com.arjunaを選択し、Details セクションの Edit をクリックします。ここにクラス固有のログ情報を追加できます。com.arjunaクラスはすでに存在します。ログレベルや、親ハンドラーを使用するかどうかを変更できます。- ログレベル
- デフォルトのログレベルは
WARNです。トランザクションはログを大量に出力できるため、標準的なログレベルの意味は、トランザクションロガーでは若干異なります。通常、選択したレベルより重要度が低いレベルでタグ付けされたメッセージは破棄されます。トランザクションログのレベル (詳細度の高い順)
- TRACE
- DEBUG
- INFO
- WARN
- ERROR
- FAILURE
- 親ハンドラーの使用
- ロガーがログ出力を親ロガーに送信するかどうかを指定します。デフォルトの動作は
trueです。
- 変更は直ちに反映されます。

Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.