Red Hat Training
A Red Hat training course is available for Red Hat JBoss Enterprise Application Platform
第19章 transaction サブシステム
19.1. トランザクションサブシステムの設定
19.1.1. トランザクション設定の概要
はじめに
次の手順は、JBoss EAP 6 のトランザクションサブシステムを設定する方法を示しています。
19.1.2. トランザクションマネージャーの設定
default
以外のプロファイルを変更する場合は、以下の方法で手順およびコマンドを変更しなければならない場合があります。
例のコマンドに関する注意点
- 管理コンソールの場合、
default
プロファイルは、最初にコンソールにログインする際に選択されるプロファイルです。別のプロファイルでトランザクションマネージャーの設定を変更する必要がある場合は、各指示でdefault
の代わりにプロファイルを選択します。同様に、CLI コマンド例で、プロファイルをdefault
プロファイルに置き換えます。 - スタンドアロンサーバーを使用する場合は、存在するプロファイルは 1 つだけです。命令を無視して、特定のプロファイルを選択します。CLI コマンドで、サンプルコマンドの
/profile=default
部分を削除します。
transactions
サブシステムを有効にする必要があります。これはデフォルトで有効にされており、他の多くのサブシステムが適切に機能するために必要であるため、無効にされる可能性が非常に低くなります。
管理コンソールを使用した TM の設定
Web ベースの管理コンソールを使用して TM を設定するには、画面上部の Configuration タブを選択します。管理対象ドメインを使用する場合は、左上の Profile 選択ボックスから正しいプロファイルを選択します。Container メニューを展開し、Transactions を選択します。
管理 CLI を使用した TM の設定
管理 CLI では、一連のコマンドを使用して TM を設定できます。このコマンドはすべて、プロファイルが /profile=default/subsystem=transactions/
の管理対象ドメインの場合は default
、スタンドアロンサーバーの場合は /subsystem=transactions
で始まります。
表19.1 TM 設定オプション
オプション | 説明 | CLI コマンド |
---|---|---|
統計の有効化 (Enable Statistics)
|
トランザクションの統計を有効にするかどうか。これらの統計は、Runtime タブの Subsystem Metrics セクションで管理コンソールで確認できます。
| /profile=default/subsystem=transactions/:write-attribute(name=enable-statistics,value=true)
|
TSM ステータスの有効化
|
アウトオブプロセスのリカバリーに使用される TSM (トランザクションステータスマネージャー) サービスを有効にするかどうか。プロセスリカバリーマネージャーを実行して異なるプロセスから ActionStatusService にアクセスすることはサポートされません(通常はメモリーで接続されます)。
|
この設定オプションはサポート対象外です。
|
デフォルトのタイムアウト (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)
|
ソケットバインディング
|
ソケットベースのメカニズムが使用される場合に、トランザクションマネージャーがリカバリーおよびトランザクション識別子を生成するために使用されるソケットバインディングの名前を指定します。一意の識別子生成の詳細は、
process-id-socket-max-ports を参照してください。ソケットバインディングは、管理コンソールの Server タブでサーバーグループごとに指定されます。
| /profile=default/subsystem=transactions/:write-attribute(name=socket-binding,value=txn-recovery-environment)
|
ソケットバインディングのステータス
|
Transaction Status マネージャーに使用するソケットバインディングを指定します。
|
この設定オプションはサポート対象外です。
|
リカバリーリスナー (Recovery Listener)
|
トランザクションリカバリーのプロセスがネットワークソケットをリッスンするかどうかを指定します。デフォルトは
false です。
| /profile=default/subsystem=transactions/:write-attribute(name=recovery-listener,value=false)
|
表19.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 を参照してください。process-id-socket-binding を有効にするには、process-id-uuid を false に設定します。
| /profile=default/subsystem=transactions/:write-attribute(name=process-id-uuid,value=true)
|
process-id-socket-binding
|
トランザクションマネージャーがソケットベースのプロセス ID を使用する必要がある場合に使用するソケットバインディング設定の名前。
undefined が process-id-uuid の場合、true になります。それ以外の場合には設定する必要があります。
| /profile=default/subsystem=transactions/:write-attribute(name=process-id-socket-binding,value=true)
|
use-hornetq-store
|
トランザクションログには、ファイルベースのストレージの代わりに HornetQ のジャーナルストレージメカニズムを使用します。デフォルトでは無効になっていますが、I/O パフォーマンスが改善されます。個別のトランザクションマネージャーの JTS トランザクションを使用することは推奨されません。このオプションを変更する場合は、shutdown コマンドを使用してサーバーを再起動して変更を反映する必要があります。
| /profile=default/subsystem=transactions/:write-attribute(name=use-hornetq-store,value=false)
|
19.1.3. JTA Transaction API を使用するようデータソースを設定
概要
ここでは、データソースで Java Transaction API (JTA) を有効にする方法を説明します。
前提条件
このタスクを続行するには、次の条件を満たしている必要があります。
- データベースまたはその他のリソースが Java Transaction API をサポートする必要があります。不明な場合は、データベースまたはその他のリソースについてのドキュメントを参照してください。
- データソースを作成します。「管理インターフェースによる非 XA データソースの作成」 を参照してください。
- JBoss EAP 6 を停止します。
- テキストエディターで設定ファイルを直接編集できる権限を持たなければなりません。
手順19.1 Java Transaction API を使用するようデータソースを設定
テキストエディターで設定ファイルを開きます。
JBoss EAP 6 を管理対象ドメインまたはスタンドアロンサーバーで実行するかによって、設定ファイルの場所は異なります。管理対象ドメイン
管理対象ドメインのデフォルトの設定ファイルは、Red Hat Enterprise Linux の場合はEAP_HOME/domain/configuration/domain.xml
、Microsoft Windows Server の場合はEAP_HOME\domain\configuration\domain.xml
にあります。スタンドアロンサーバー
スタンドアロンサーバーのデフォルト設定ファイルは、Red Hat Enterprise Linux の場合はEAP_HOME/standalone/configuration/standalone.xml
、Microsoft Windows Server の場合は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
に設定します。直前の手順のように、<datasource&
gt; タグの内容に以下を追加します:jta="true"
特定のユースケース(読み取り専用のデータソースの定義など)がない場合、Red Hat は、デフォルト値のjta=true
を上書きすることを推奨していません。この設定は、データソースが Java Transaction API を反映し、JCA 実装による接続の追跡を改善できることを示します。設定を保存します。
設定ファイルを保存しテキストエディターを終了します。JBoss EAP 6 を起動します。
JBoss EAP 6 サーバーを再起動します。
結果
JBoss EAP 6 が起動し、データソースが Java Transaction API を使用するように設定されます。
19.1.4. XA Datasource の設定
前提条件
管理コンソールへのログイン
新しいデータソースを追加します。
新しいデータソースを JBoss EAP 6 に追加します。上部の XA データソース タブをクリックします。注記JBoss EAP 6 に新しいデータソース 『を追加する方法については、『 『Administration and Configuration Guide』 』の「Creating an XA Datasource with the Management Interfaces』 」を参照してください。必要に応じて他のプロパティーを設定します。
すべてのデータソースパラメーターは 「データソースのパラメーター」 に記載されています。
結果
XA Datasource が設定され、使用する準備ができます。
19.1.5. トランザクションログメッセージ
DEBUG
ログレベルを使用します。詳細なデバッグには、TRACE
ログレベルを使用します。トランザクションロガーの設定に関する詳細は、「トランザクションサブシステムのログ設定」 を参照してください。
TRACE
ログレベルにログインするように設定すると、トランザクションマネージャーは多くのロギング情報を生成できます。最も一般的なメッセージの一部は次のとおりです。このリストは包括的なものではないため、他のメッセージが表示されることもあります。
表19.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());
この結果、上記のように同じスレッドがトランザクションをロールバックすることが示されます。
|
19.1.6. トランザクションサブシステムのログ設定
概要
この手順を使用して、JBoss EAP 6 の他のロギング設定とは関係なく、トランザクションに関するログに記録される情報量を制御します。メイン手順では、Web ベースの管理コンソールでこれを行う方法を説明します。管理 CLI コマンドは後で指定されます。
手順19.2 管理コンソールを使用したトランザクションロガーの設定
ログ設定領域に移動します。
管理コンソールで、Configuration タブをクリックします。管理対象ドメインを使用する場合は、左上の Profile 選択ボックスから、設定するサーバープロファイルを選択します。Core メニューを展開し、Logging を選択します。com.arjuna
属性を編集します。Log Categories タブを選択します。com.arjuna
を選択し、Details セクションで Edit を選択します。ここでは、クラス固有のロギング情報を追加できます。com.arjuna
クラスがすでに存在します。ログレベルや親ハンドラーを使用するかどうかを変更できます。- ログレベル
- ログレベルはデフォルトで
WARN
です。トランザクションは大量のロギング出力を生成する可能性があるため、標準のロギングレベルの意味はトランザクションロガーでは若干異なります。通常、選択したレベルよりも重大度の低いレベルでタグ付けされたメッセージは破棄されます。トランザクションログのレベル (詳細度の高い順)
- TRACE
- DEBUG
- INFO
- WARN
- ERROR
- FAILURE
- 親ハンドラーの使用
- ロガーが出力を親ロガーに送信するかどうか。デフォルトの動作は
true
です。
- 変更は直ちに反映されます。