第15章 トランザクションサブシステム
15.1. トランザクションサブシステムの設定
15.1.1. トランザクション設定の概要
次の手順は、JBoss Enterprise Application Platform のトランザクションサブシステムを設定する方法を示しています。
15.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
で始まります。
表15.1 TM 設定オプション
オプション | 詳細 | CLI コマンド |
---|---|---|
Enable Statistics
|
トランザクションの統計を有効にするかどうか指定します。統計は Runtime タブの Subsystem Metrics セクションにある管理コンソールで閲覧できます。
| /profile=default/subsystem=transactions/:write-attribute(name=enable-statistics,value=true)
|
Enable TSM Status
|
トランザクションステータスマネージャー (TSM) のサービスを有効にするかどうか指定します。これは、アウトオブプロセスのリカバリに使用されます。
| /profile=default/subsystem=transactions/:write-attribute(name=enable-tsm-status,value=false)
|
Default Timeout
|
デフォルトのトランザクションタイムアウトです。デフォルトでは
300 秒に設定されています。トランザクションごとにプログラムで上書きできます。
| /profile=default/subsystem=transactions/:write-attribute(name=default-timeout,value=300)
|
Path
|
トランザクションマネージャーコアがデータを格納するファイルシステムの相対または絶対パスです。デフォルトの値は
relative-to 属性の値と相対的なパスです。
| /profile=default/subsystem=transactions/:write-attribute(name=path,value=var)
|
Relative To
|
ドメインモデルのグローバルなパス設定を参照します。デフォルト値は、JBoss Enterprise Application Platform 用のデータディレクトリで、
jboss.server.data.dir プロパティの値です。デフォルトでは、管理ドメインの場合は EAP_HOME/domain/data/ に、スタンドアローンサーバーの場合は EAP_HOME/standalone/data/ に設定されています。path TM 属性の値は、このパスに相対的です。空の文字列を使用して、デフォルト動作を無効にし、path 属性の値が絶対パスとして強制的に扱われるようにします。
| /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 Enterprise Application Platform 用のデータディレクトリで、
jboss.server.data.dir プロパティの値です。デフォルトでは、管理ドメインの場合は EAP_HOME/domain/data/ に、スタンドアローンサーバーの場合は EAP_HOME/standalone/data/ に設定されています。path TM 属性の値は、このパスに相対的です。空の文字列を使用して、デフォルト動作を無効にし、path 属性の値が絶対パスとして強制的に扱われるようにします。
| /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)
|
Status Socket Binding
|
トランザクションステータスマネージャーで使用するソケットバインディングを指定します。
| /profile=default/subsystem=transactions/:write-attribute(name=status-socket-binding,value=txn-status-manager)
|
Recovery Listener
|
トランザクション回復のプロセスがネットワークソケットをリッスンするかどうか指定します。デフォルトは
false です。
| /profile=default/subsystem=transactions/:write-attribute(name=recovery-listener,value=false)
|
表15.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 トランザクションを使用することは推奨されません。これを有効にした場合は、
log-store 値も hornetq に変更してください。
| /profile=default/subsystem=transactions/:write-attribute(name=use-hornetq-store,value=false)
|
log-store
|
ファイルシステムベースのオブジェクトストアを使用する場合は
default に、HornetQ のジャーナリングストレージメカニズムを使用する場合は hornetq に設定します。これを hornetq に設定した場合は、use-hornetq-store も true に変更してください。
| /profile=default/subsystem=transactions/log-store=log-store/:write-attribute(name=type,value=default)
|
15.1.3. JTA トランザクションを使用するようにデータソースを設定する
このタスクでは、Java Transaction API (JTA) をお使いのデータソースで有効化する方法を説明します。ここでの説明はアーリーアクセスプログラム用で、Enterprise Application Platform 6 では変更される予定です。
このタスクを行う前に、 次の条件を満たす必要があります。
- お使いのデータベースまたはその他のリソースが JTA をサポートしている必要があります。不明な場合は、データソースまたはリソースの文書を参照してください。
- データベースを作成する必要があります。「管理インターフェースによる非 XA データソースの作成」 を参照してください。
- JBoss Enterprise Application Platform を停止します。
- テキストエディターで設定ファイルを直接編集できる権限を持たなければなりません。
手順15.1 タスク
テキストエディターで設定ファイルを開きます。
Enterprise Application Platform を管理ドメインまたはスタンドアローンサーバーで実行するかどうかに応じて、設定ファイルの場所が異なります。管理対象ドメイン
管理ドメインのデフォルトの設定ファイルは、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 Enterprise Application Platform を起動します。
JBoss Enterprise Application Platform 6 サーバーを再起動します。
JBoss Enterprise Application Platform が起動し、データソースが JTA トランザクションを使用するように設定されます。
15.1.4. XA Datasource の設定
XA Datasource を追加するには、管理コンソールにログインする必要があります。詳細は 「管理コンソールへログイン」 を参照してください。
新規データソースの追加
新規データソースを Enterprise Application Platform に追加します。「管理インターフェースによる非 XA データソースの作成」 の手順に従いますが、上部の XA Datasource タブをクリックしてください。必要に応じて他のプロパティーを設定します。
データソースパラメーターの一覧は 「データソースのパラメーター」 にあります。
XA Datasource が設定され、使用する準備ができました。
15.1.5. トランザクションログメッセージについて
DEBUG
ログレベルを使用します。詳細なデバッグでは TRACE
ログレベルを使用します。トランザクションロガーの設定に関する詳細は 「トランザクションサブシステムのログ設定」 を参照してください。
TRACE
ログレベルに設定すると、トランザクションマネージャーは多くのロギング情報を生成できます。一般的に表示されるメッセージの一部は次の通りです。他のメッセージが表示されることもあります。
表15.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()); You will then see the same thread rolling back the transaction as shown above |
15.1.6. トランザクションサブシステムのログ設定
Enterprise Application Platform の他のログ設定に依存せずにトランザクションログの情報量を制御する手順を説明します。主に Web ベースの管理コンソールを用いた手順を説明し、管理 CLI のコマンドはその説明の後で取り上げます。
手順15.2 管理コンソールを使用したトランザクションロガーの設定
ログ設定エリアへの移動
管理コンソールにて画面の左上にある Profiles タブをクリックします。管理ドメインを使用する場合は、右上の Profile 選択ボックスから設定したいサーバープロファイルを選択します。Core メニューを展開して、Logging ラベルをクリックします。com.arjuna
属性を編集します。ページの下の方にある Details セクションの Edit ボタンをクリックします。ここにクラス固有のログ情報を追加できます。com.arjuna
クラスはすでに存在しています。ログレベルと親ハンドラーを使用するかどうか変更できます。- ログレベル
- デフォルトのログレベルは
WARN
です。トランザクションはログを大量に出力できるため、標準的なログレベルの意味は、トランザクションロガーでは若干異なります。通常、選択したレベルより重要度が低いレベルでタグ付けされたメッセージは破棄されます。トランザクションログのレベル (詳細度が最高レベルから最低レベルまで)
- DEBUG
- INFO
- WARN
- ERROR
- FAILURE
- 親ハンドラーの使用
- ロガーがログ出力を親ロガーに送信するかどうか指定します。デフォルトの動作は
true
です。
- 変更は直ちに反映されます。