第8章 トランザクション


Red Hat Data Grid は JTA 準拠のトランザクションを使用し、参加するよう設定できます。または、トランザクションのサポートが無効になっている場合は、JDBC 呼び出しで自動コミットを使用する場合と同等になります。ここでは、すべての変更後に変更がレプリケートされる可能性があります (レプリケーションが有効な場合)。

キャッシュ操作ごとに、Red Hat Data Grid は以下を行います。

  1. スレッドに関連する現在の トランザクション を取得します。
  2. トランザクションのコミットまたはロールバック時に通知されるように、XAResource をトランザクションマネージャーに登録します (登録されていない場合)。

これを実行するには、キャッシュに環境の TransactionManager への参照を提供する必要があります。これは通常、TransactionManagerLookup インターフェースの実装のクラス名でキャッシュを設定することで行われます。キャッシュが起動すると、このクラスのインスタンスを作成し、TransactionManager への参照を返す getTransactionManager() メソッドを呼び出します。

Red Hat Data Grid には、複数のトランザクションマネージャーの検索クラスが同梱されています。

トランザクションマネージャールックアップの実装

  • EmbeddedTransactionManagerLookup: これは、他の実装が利用できない場合にのみ埋め込みモードに使用する必要がある基本的なトランザクションマネージャーを提供します。この実装は、同時トランザクションおよびリカバリーでは、重大な制限があります。
  • JBossStandaloneJTAManagerLookup: スタンドアロン環境で Red Hat Data Grid を実行しているか、JBoss AS 7 以前、WildFly 8、9、および 10 で実行している場合、トランザクションマネージャーのデフォルト選択になります。このトランザクションは、EmbeddedTransactionManager の不足をすべて解消する JBoss Transactions をベースとした本格的なトランザクションマネージャーです。
  • WildflyTransactionManagerLookup: Wildfly 11 以降で Red Hat Data Grid を実行している場合は、トランザクションマネージャーのデフォルト選択になります。
  • GenericTransactionManagerLookup: これは、最も一般的な Java EE アプリケーションサーバーでトランザクションマネージャーを見つけるルックアップクラスです。トランザクションマネージャーが見つからない場合は、EmbeddedTransactionManager がデフォルトの設定になります。

警告: DummyTransactionManagerLookup は 9.0 で非推奨となり、今後削除される予定です。代わりに EmbeddedTransactionManagerLookup を使用してください。

初期化すると、TransactionManagerCache 自体から取得することもできます。

//the cache must have a transactionManagerLookupClass defined
Cache cache = cacheManager.getCache();

//equivalent with calling TransactionManagerLookup.getTransactionManager();
TransactionManager tm = cache.getAdvancedCache().getTransactionManager();
Copy to Clipboard Toggle word wrap

8.1. トランザクションの設定

トランザクションはキャッシュレベルで設定されます。以下はトランザクションの動作に影響する設定と、各設定属性の簡単な説明になります。

<locking
   isolation="READ_COMMITTED"
   write-skew="false"/>
<transaction
   locking="OPTIMISTIC"
   auto-commit="true"
   complete-timeout="60000"
   mode="NONE"
   notifications="true"
   protocol="DEFAULT"
   reaper-interval="30000"
   recovery-cache="__recoveryInfoCacheName__"
   stop-timeout="30000"
   transaction-manager-lookup="org.infinispan.transaction.lookup.GenericTransactionManagerLookup"/>
<versioning
   scheme="NONE"/>
Copy to Clipboard Toggle word wrap

プログラムを使用する場合

ConfigurationBuilder builder = new ConfigurationBuilder();
builder.locking()
    .isolationLevel(IsolationLevel.READ_COMMITTED)
    .writeSkewCheck(false);
builder.transaction()
    .lockingMode(LockingMode.OPTIMISTIC)
    .autoCommit(true)
    .completedTxTimeout(60000)
    .transactionMode(TransactionMode.NON_TRANSACTIONAL)
    .useSynchronization(false)
    .notifications(true)
    .transactionProtocol(TransactionProtocol.DEFAULT)
    .reaperWakeUpInterval(30000)
    .cacheStopTimeout(30000)
    .transactionManagerLookup(new GenericTransactionManagerLookup())
    .recovery()
    .enabled(false)
    .recoveryInfoCacheName("__recoveryInfoCacheName__");
builder.versioning()
    .enabled(false)
    .scheme(VersioningScheme.NONE);
Copy to Clipboard Toggle word wrap
  • isolation - 分離レベルを設定します。詳細は、「分離レベル」を参照してください。デフォルトは REPEATABLE_READ です。
  • write-skew: 書き込みスキューチェックを有効にします(非推奨)。Red Hat Data Grid は、この属性を Library Mode に自動的に設定します。デフォルトは READ_COMMITTEDfalse です。デフォルトは REP EATABLE_READ です。詳細は、「 Write Skews 」を参照してください。
  • locking - キャッシュが楽観的または悲観的ロックを使用するかどうかを設定します。詳細は、「トランザクションのロック」を参照してください。デフォルトは OPTIMISTIC です。
  • auto-commit: 有効にすると、ユーザーは 1 回の操作でトランザクションを手動で開始する必要はありません。トランザクションは自動的に起動およびコミットされます。デフォルトは true です。
  • complete-timeout - 完了したトランザクションに関する情報を保持する期間 (ミリ秒単位)。デフォルトは 60000 です。
  • mode: キャッシュがトランザクションかどうかを設定します。デフォルトは NONE です。利用可能なオプションは以下のとおりです。

    • NONE - 非トランザクションキャッシュ
    • FULL_XA - リカバリーが有効になっている XA トランザクションキャッシュリカバリーの詳細は、「トランザクションリカバリー」を参照してください。
    • NON_DURABLE_XA - リカバリーが無効になっている XA トランザクションキャッシュ。
    • NON_XA - XA の代わりに 同期化 を介して統合されたトランザクションキャッシュ。詳細は、「同期の登録」のセクションを参照してください。
    • BATCH- バッチを使用して操作をグループ化するトランザクションキャッシュ。詳細は「バッチ処理」のセクションを参照してください。
  • notifications - キャッシュリスナーのトランザクションイベントを有効/無効にします。デフォルトは true です。
  • protocol: プロトコルの使用を設定します。デフォルトは DEFAULT です。利用可能な値は次のとおりです。

    • DEFAULT - 従来の Two-Phase-Commit プロトコルを使用します。これについては、以下で説明します。
    • TOTAL_ORDER: トランスポート がトランザクションをコミットするために確保された合計順序を使用します。詳細は「 Total Order based commit protocol 」セクションを確認してください。
  • reaper-interval - トランザクション完了情報をクリーンアップするスレッドが開始する間隔 (ミリ秒単位)。デフォルトは 30000 です。
  • recovery-cache - リカバリー情報を保存するキャッシュ名を設定します。リカバリーの詳細は、「トランザクションリカバリー」を参照してください。デフォルトは recoveryInfoCacheName です。
  • stop-timeout - キャッシュの停止時に進行中のトランザクションを待機する時間 (ミリ秒単位)。デフォルトは 30000 です。
  • transaction-manager-lookup - javax.transaction.TransactionManager への参照を検索するクラスの完全修飾クラス名を設定します。デフォルトは org.infinispan.transaction.lookup.GenericTransactionManagerLookup です。
  • バージョン管理 スキーム - 書き込みスキューが最適なトランザクションまたは合計注文トランザクションで有効化されたときに使用するバージョンスキームを設定します。詳細は、「 Write Skews 」のセクションを参照してください。デフォルトは NONE です。

Two-Phase-Commit(2PC)を Red Hat Data Grid に実装する方法と、ロックを取得する方法の詳細は、以下のセクションを参照してください。構成設定の詳細は、「 設定リファレンス 」を参照してください。

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2026 Red Hat