14.2. トランザクション管理


14.2.1. トランザクションの参照と管理

管理 CLI では、トランザクションレコードを参照および操作する機能がサポートされます。この機能は、TM と JBoss EAP の管理 API 間の対話によって提供されます。

トランザクションマネージャーは、待機中の各トランザクションとトランザクションに関連する参加者に関する情報を、オブジェクトストアと呼ばれる永続ストレージに格納します。管理 API は、オブジェクトストアを log-store と呼ばれるリソースとして公開します。probe 操作はトランザクションログを読み取り、各レコードに対してノードパスを作成します。probe コマンドは、log-store を更新する必要があるときに、いつでも手動で呼び出すことができます。トランザクションログが即座に表示され非表示になるのは、正常な挙動です。

ログストアの更新

以下のコマンドは、マネージドドメインでプロファイル default を使用するサーバーグループに対してログストアを更新します。スタンドアローンサーバーの場合は、コマンドから profile=default を削除します。

/profile=default/subsystem=transactions/log-store=log-store:probe
準備済みトランザクションすべての表示

準備済みトランザクションをすべて表示するには、最初に ログストアを更新 し、ファイルシステムの ls コマンドに類似した機能を持つ次のコマンドを実行します。

ls /profile=default/subsystem=transactions/log-store=log-store/transactions

または、以下を実行します。

/host=master/server=server-one/subsystem=transactions/log-store=log-store:read-children-names(child-type=transactions)

各トランザクションが一意の識別子とともに表示されます。個別の操作は、個別のトランザクションに対して実行できます (トランザクションの管理 を参照)。

14.2.1.1. トランザクションの管理

トランザクションの属性を表示する

JNDI 名、EIS 製品名およびバージョン、状態などのトランザクションに関する情報を表示するには、read-resource 操作を使用します。

/profile=default/subsystem=transactions/log-store=log-store/transactions=0\:ffff7f000001\:-b66efc2\:4f9e6f8f\:9:read-resource
トランザクション参加者の詳細の表示

各トランザクションログには、participants (参加者) と呼ばれる子要素が含まれます。トランザクションの参加者の詳細を確認するには、この要素に read-resource 操作を使用します。参加者は JNDI 名によって識別されます。

/profile=default/subsystem=transactions/log-store=log-store/transactions=0\:ffff7f000001\:-b66efc2\:4f9e6f8f\:9/participants=java\:\/JmsXA:read-resource

結果は以下のようになります。

{
   "outcome" => "success",
   "result" => {
       "eis-product-name" => "ActiveMQ",
       "eis-product-version" => "2.0",
       "jndi-name" => "java:/JmsXA",
       "status" => "HEURISTIC",
       "type" => "/StateManager/AbstractRecord/XAResourceRecord"
   }
}

ここで示された結果は HEURISTIC 状態であり、リカバリーが可能です。詳細は、トランザクション参加者のリカバリー を参照してください。

特別な場合では、ログに対応するトランザクションレコードがないオーファンレコード (XAResourceRecords) をオブジェクトストアに作成できます。たとえば、準備済みの XA リソースが TM の記録前にクラッシュし、ドメイン管理 API はアクセス不可能である場合などです。このようなレコードにアクセスするには、管理オプション expose-all-logstrue に設定する必要があります。このオプションは管理モデルには保存されず、サーバーが再起動されると false に戻ります。

/profile=default/subsystem=transactions/log-store=log-store:write-attribute(name=expose-all-logs, value=true)

代わりに以下のコマンドを実行すると、トランザクション参加者 ID が集約され表示されます。

/host=master/server=server-one/subsystem=transactions/log-store=log-store/transactions=0\:ffff7f000001\:-b66efc2\:4f9e6f8f\:9:read-children-names(child-type=participants)
トランザクションを削除します。

各トランザクションログは、トランザクションを表すトランザクションログを削除する delete 操作をサポートします。

/profile=default/subsystem=transactions/log-store=log-store/transactions=0\:ffff7f000001\:-b66efc2\:4f9e6f8f\:9:delete

これにより、トランザクションのすべての参加者も削除されます。

トランザクション参加者の回復

トランザクションの各参加者は、recover 操作を使用したリカバリーをサポートします。

/profile=default/subsystem=transactions/log-store=log-store/transactions=0\:ffff7f000001\:-b66efc2\:4f9e6f8f\:9/participants=2:recover

トランザクション参加者の状態が HEURISTIC である場合、recover 操作は状態を PREPARE に切り替え、周期リカバリープロセスにコミットを再実行するよう要求します。

コミットに成功すると、参加者はトランザクションログから削除されます。これを検証するには、log-storeprobe 操作を実行し、参加者がリストされていないことを確認します。最後の参加者が削除されると、トランザクションも削除されます。

トランザクション参加者のステータスを更新する

トランザクションをリカバリーする必要がある場合は、リカバリーを試行する前に refresh 操作を使用して、トランザクションのリカバリーが必要であるかを確認できます。

/profile=default/subsystem=transactions/log-store=log-store/transactions=0\:ffff7f000001\:-b66efc2\:4f9e6f8f\:9/participants=2:refresh

14.2.2. トランザクション統計情報の表示

トランザクションマネージャーの統計が有効になっていると、トランザクションマネージャーによって処理されたトランザクションの統計を表示できます。トランザクションマネージャーの統計を有効にする方法については、トランザクションマネージャーの設定 を参照してください。

管理コンソールまたは管理 CLI を使用して統計を表示できます。管理コンソールでは、Runtime タブから Transaction サブシステムを選択するとトランザクションの統計を表示できます。管理 CLI では、read-resource 操作に include-runtime=true を使用すると統計を表示できます。以下に例を示します。

/subsystem=transactions:read-resource(include-runtime=true)

次の表に、利用可能な各統計とその説明を示します。

表14.2 Transactions サブシステムの統計
統計説明

number-of-transactions

このサーバー上でトランザクションマネージャーにより処理されるトランザクションの合計数。

number-of-committed-transactions

このサーバー上でトランザクションマネージャーにより処理されるコミット済みトランザクションの数。

number-of-aborted-transactions

このサーバー上でトランザクションマネージャーにより処理されるアボートされたトランザクションの数。

number-of-timed-out-transactions

このサーバー上でトランザクションマネージャーにより処理されるタイムアウトのトランザクションの数。タイムアウトしたトランザクションの数は、中止されたトランザクションの数にも計算されます。

number-of-heuristics

ヒューリスティック状態のトランザクションの数。

number-of-inflight-transactions

開始済みであるが終了されていないトランザクション数。

number-of-application-rollbacks

障害の原因がアプリケーションであった失敗トランザクションの数。

number-of-resource-rollbacks

障害の原因がリソースであった失敗トランザクションの数。

14.2.3. トランザクションオブジェクトストア

トランザクションにはオブジェクトを保存する場所が必要です。オブジェクトストレージのオプションの 1 つが JDBC データソースです。特にパフォーマンスが気になる場合、JDBC オフジェクトストアはファイルシステムまたは ActiveMQ ジャーナルオブジェクトストアよりも速度が遅くなる場合があります。

重要

トランザクションログのストレージタイプとして Apache ActiveMQ Artemis ジャーナルを使用するよう transactions サブシステムが設定されている場合、JBoss EAP の 2 つのインスタンスは同じディレクトリーを使用してジャーナルを保存することはできません。アプリケーションサーバーインスタンスは同じ場所を共有することはできず、アプリケーションサーバーインスタンスごとに一意な場所を設定する必要があります。

注記

トランザクションオブジェクトストアがないと、データの一貫性を保てなくなる可能性があります。そのため、オブジェクトストアを 安全な ドライブに配置する必要があります。

JDBC データソースをトランザクションオブジェクトストアとして使用

JDBC データソースをトランザクションオブジェクトストアとして使用するには、以下の手順に従います。

  1. データソース (例: TransDS) を作成します。手順については、非 XA データソースの作成を 参照してください。オブジェクトストアが適切に動作するには、データソースの JDBC ドライバーを JAR デプロイメントとしてではなく、コアモジュールとしてインストールする 必要があることに注意してください。
  2. データソースの jta 属性を false に設定します。

    /subsystem=datasources/data-source=TransDS:write-attribute(name=jta, value=false)
  3. jdbc-store-datasource 属性を、使用するデータソースの JNDI 名に設定します (例: java:jboss/datasources/TransDS)。

    /subsystem=transactions:write-attribute(name=jdbc-store-datasource, value=java:jboss/datasources/TransDS)
  4. use-jdbc-store 属性を true に設定します。

    /subsystem=transactions:write-attribute(name=use-jdbc-store, value=true)
  5. JBoss EAP サーバーを再起動し、変更を反映します。
トランザクション JDBC ストア属性

以下の表は、JDBC オブジェクトストレージに関係する利用可能な属性をすべて表しています。

表14.3 トランザクション JDBC ストア属性
プロパティー説明

use-jdbc-store

トランザクションに対して JDBC ストアを有効にするには、true に設定します。

jdbc-store-datasource

ストレージに使用される JDBC データソースの JNDI 名。

jdbc-action-store-drop-table

起動時にアクションストアテーブルをドロップおよび再作成するかどうか。デフォルトは false です。

jdbc-action-store-table-prefix

アクションストアテーブル名の接頭辞。

jdbc-communication-store-drop-table

起動時にコミュニケーションストアテーブルをドロップおよび再作成するかどうか。デフォルトは false です。

jdbc-communication-store-table-prefix

コミュニケーションストアテーブル名の接頭辞。

jdbc-state-store-drop-table

起動時にステートストアテーブルをドロップおよび再作成するかどうか。デフォルトは false です。

jdbc-state-store-table-prefix

ステートストアテーブル名の接頭辞。

ActiveMQ ジャーナルオブジェクトストアの使用

以下の手順に従って、ActiveMQ ジャーナルオブジェクトストアを使用します。

  1. use-journal-store 属性を true に設定します。

    /subsystem=transactions:write-attribute(name=use-journal-store,value=true)
  2. JBoss EAP サーバーを再起動し、変更を反映します。
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat, Inc.