第18章 トランザクションサブシステム
18.1. トランザクションサブシステムの設定
18.1.1. トランザクション設定の概要
次の手順は、JBoss EAP 6 のトランザクションサブシステムを設定する方法を示しています。
18.1.2. トランザクションマネージャーの設定
default
以外のプロファイルを修正したい場合は、以下の方法で手順とコマンドを修正する必要があることがあります。
例のコマンドに関する注意点
- 管理コンソールの場合、
default
プロファイルは最初のコンソールログイン時に選択されるものです。異なるプロファイルでトランザクションマネージャーの設定を修正する必要がある場合は、default
の代わりに使用しているプロファイルを選択してください。同様に、例の CLI コマンドのdefault
プロファイルを使用しているプロファイルに置き換えてください。 - スタンドアロンサーバーを使用する場合、存在するプロファイルは 1 つのみです。特定のプロファイルを選択する手順は無視してください。CLI コマンドでは、例のコマンドの
/profile=default
部分を削除してください。
注記
transactions
サブシステムが有効でなくてはなりません。これは、デフォルトで有効になっており、他の多くのサブシステムが適切に機能するために必要なため、無効にする可能性は大変低くなります。
Web ベースの管理コンソールを使用して TM を設定するには、管理コンソール画面の左上にある一覧から [Runtime] タブを選択します。管理対象ドメインを使用する場合、選択できるプロファイルがいくつかあります。プロファイル画面の右上にある [Profile] 選択ボックスから適切なプロファイルを選択してください。[Container] メニューを展開して、[Transactions] を選択します。
管理 CLI では、一連のコマンドを使用して TM を設定できます。プロファイル default
の管理対象ドメインの場合、コマンドはすべて /profile=default/subsystem=transactions/
で始まり、スタンドアロンサーバーの場合は /subsystem=transactions
で始まります。
表18.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)
|
パス (Path)
|
トランザクションマネージャーコアがデータを格納するファイルシステムの相対または絶対パスです。デフォルトの値は
relative-to 属性の値と相対的なパスです。このパスは、process-id タグ (または process-id-uuid CLI attribute ) が使用されるときにプロセス ID を保存するために使用されます。
| /profile=default/subsystem=transactions/:write-attribute(name=path,value=var)
|
相対的 (Relative To)
|
ドメインモデルのグローバルなパス設定を参照します。デフォルト値は、JBoss EAP 6 のデータディレクトリーで、
jboss.server.data.dir プロパティーの値です。デフォルトは、管理対象ドメインの場合は EAP_HOME/domain/data/ 、スタンドアロンサーバーインスタンスの場合は EAP_HOME/standalone/data/ です。オブジェクトストアの path TM 属性の値はこのパスに相対的です。
| /profile=default/subsystem=transactions/:write-attribute(name=relative-to,value=jboss.server.data.dir)
|
オブジェクトストアパス (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/ です。オブジェクトストアの path TM 属性の値はこのパスに相対的です。
| /profile=default/subsystem=transactions/:write-attribute(name=object-store-relative-to,value=jboss.server.data.dir)
|
ソケットバインディング
|
ソケットベースのメカニズムを使用する場合に、トランザクションマネージャーの回復およびトランザクション識別子の生成に使用するソケットバインディングの名前を指定します。一意の識別子を生成する詳しい情報は、
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)
|
表18.2 高度な TM 設定オプション
オプション | 説明 | CLI コマンド |
---|---|---|
jts
|
Java Transaction Service (JTS) トランザクションを使用するかどうかを指定します。デフォルトは
false で、JTA トランザクションのみを使用します。
| /profile=default/subsystem=transactions/:write-attribute(name=jts,value=false)
|
node-identifier
|
JTS サービスのノード識別子です。トランザクションマネージャーがリカバリー時にこれを使用するため、JTS サービスごとに一意でなければなりません。
| /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 トランザクションを使用することは推奨されません。
| /profile=default/subsystem=transactions/:write-attribute(name=use-hornetq-store,value=false)
|
18.1.3. JTA トランザクションを使用するようにデータソースを設定
ここでは、データソースで Java Transactions API (JTA) を有効にする方法を説明します。
このタスクを続行するには、次の条件を満たしている必要があります。
- お使いのデータベースまたはその他のリソースが JTA をサポートしている必要があります。不明な場合は、データソースまたはリソースの文書を参照してください。
- データベースを作成する必要があります。「管理インターフェースによる非 XA データソースの作成」 を参照してください。
- JBoss EAP 6 を停止します。
- テキストエディターで設定ファイルを直接編集できる権限を持たなければなりません。
手順18.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 トランザクションを使用するように設定されます。
18.1.4. XA Datasource の設定
XA Datasource を追加するには、管理コンソールにログインする必要があります。詳細は 「管理コンソールへログイン」 を参照してください。
新しいデータソースを追加します。
新しいデータソースを JBoss EAP 6 に追加します。「管理インターフェースによる非 XA データソースの作成」 の手順に従いますが、上部の XA Datasource タブをクリックしてください。必要に応じて他のプロパティーを設定します。
データソースパラメーターの一覧は 「データソースのパラメーター」 にあります。
XA Datasource が設定され、使用する準備ができました。
18.1.5. トランザクションログメッセージ
DEBUG
ログレベルを使用します。詳細なデバッグでは TRACE
ログレベルを使用します。トランザクションロガーの設定に関する詳細は 「トランザクションサブシステムのログ設定」 を参照してください。
TRACE
ログレベルに設定すると、トランザクションマネージャーは多くのロギング情報を生成できます。一般的に表示されるメッセージの一部は次のとおりです。他のメッセージが表示されることもあります。
表18.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());
その後、上記のように同じスレッドがトランザクションをロールバックすることが確認できます。
|
18.1.6. トランザクションサブシステムのログ設定
JBoss EAP 6 の他のログ設定に依存せずにトランザクションログの情報量を制御する手順を説明します。主に Web ベースの管理コンソールを用いた手順を説明し、管理 CLI のコマンドはその説明の後で取り上げます。
手順18.2 管理コンソールを使用したトランザクションロガーの設定
ログ設定エリアへの移動
管理コンソールにて画面の左上にある Profiles タブをクリックします。管理対象ドメインを使用する場合は、右上の Profile 選択ボックスから設定したいサーバープロファイルを選択します。Core メニューを展開して、Logging ラベルをクリックします。com.arjuna
属性を編集します。ページの下の方にある Details セクションの Edit ボタンをクリックします。ここにクラス固有のログ情報を追加できます。com.arjuna
クラスはすでに存在しています。ログレベルと、親ハンドラーの使用の有無を変更できます。- ログレベル
- デフォルトのログレベルは
WARN
です。トランザクションはログを大量に出力できるため、標準的なログレベルの意味は、トランザクションロガーでは若干異なります。通常、選択したレベルより重要度が低いレベルでタグ付けされたメッセージは破棄されます。トランザクションログのレベル (詳細度が最高レベルから最低レベルまで)
- TRACE
- DEBUG
- INFO
- WARN
- ERROR
- FAILURE
- 親ハンドラーの使用
- ロガーがログ出力を親ロガーに送信するかどうかを指定します。デフォルトの動作は
true
です。
- 変更は直ちに反映されます。