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

25.2.1. トランザクションの設定 (ライブラリーモード)

Red Hat JBoss Data Grid では、ライブラリーモードのトランザクションは、同期化およびトランザクションリカバリーと共に設定できます。トランザクションは全体として (同期化およびトランザクションリカバリーを含む)、リモートクライアントサーバーモードで使用することはできません。
ライブラリーモードでは、トランザクションは以下のように設定されます。

手順25.1 ライブラリーモードでのトランザクションの設定 (XML 設定)

<namedCache <!-- Additional configuration information here -->>
	<transaction <!-- Additional configuration information here --> >
	<locking <!-- Additional configuration information here --> >
	<versioning enabled="{true,false}" 
		    versioningScheme="{NONE|SIMPLE}"/>
        <!-- Additional configuration information here -->
</namedCache>
  1. versioning パラメーターの enabled パラメーターを true に設定します。
  2. versioningScheme パラメーターを NONE または SIMPLE のいずれかに設定して、使用するバージョン管理スキームを設定します。

手順25.2 ライブラリーモード (プログラムを用いた設定) でトランザクションを設定します。

  1. Configuration config = new ConfigurationBuilder()/* ... */.transaction()
            .transactionMode(TransactionMode.TRANSACTIONAL)
            .transactionManagerLookup(new GenericTransactionManagerLookup())
            .lockingMode(LockingMode.OPTIMISTIC)
            .useSynchronization(true)
            .recovery()
                .recoveryInfoCacheName("anotherRecoveryCacheName").build();
    1. トランザクションモードを設定します。
    2. ルックアップクラスを選択し、設定します。利用可能なルックアップクラスのリストについては、この手順の下にある表を参照してください。
    3. lockingMode 値は、楽観的または悲観的ロックを使用するかどうかを決定します。キャッシュが非トランザクションの場合、ロックモードは無視されます。デフォルト値は OPTIMISTIC です。
    4. useSynchronization 値は、トランザクションマネージャーを使って同期化を登録するようにキャッシュを設定するか、またはキャッシュ自体を XA リソースとして登録するようにキャッシュを設定します。デフォルト値は true (同期の使用) です。
    5. recovery パラメーターは、true に設定されるとキャッシュのリカバリーを有効にします。
      recoveryInfoCacheName は、リカバリー情報が保持されるキャッシュの名前を設定します。キャッシュのデフォルト名は RecoveryConfiguration.DEFAULT_RECOVERY_INFO_CACHE によって指定されます。
  2. 書き込みスキューチェックを設定します。

    writeSkew チェックは、異なるトランザクションからのエントリーに対する変更によりトランザクションがロールバックされるべきかどうかを判別します。true に設定された書き込みスキューにより、isolation_levelREPEATABLE_READ に設定する必要があります。writeSkew および isolation_level のデフォルト値はそれぞれ falseREAD_COMMITTED です。
    Configuration config = new ConfigurationBuilder()/* ... */.locking()
            .isolationLevel(IsolationLevel.REPEATABLE_READ).writeSkewCheck(true);
  3. エントリーのバージョン管理を設定します。

    クラスター化されたキャッシュについては、エントリーのバージョン管理を有効にし、その値を SIMPLE に設定することにより書き込みスキューのチェックを有効にします。
    Configuration config = new ConfigurationBuilder()/* ... */.versioning()
            .enable()
            .scheme(VersioningScheme.SIMPLE);

表25.1 トランザクションマネージャーのルックアップクラス

クラス名 説明
org.infinispan.transaction.lookup.DummyTransactionManagerLookup テスト環境で主に使用されます。このテスト向けのトランザクションマネージャーは実稼働環境では使用されず、特に並列トランザクションやリカバリーなどの機能は厳しく制限されます。
org.infinispan.transaction.lookup.JBossStandaloneJTAManagerLookup Red Hat JBoss Data Grid がスタンドアロン環境で実行される場合のデフォルトのトランザクションマネージャーです。これにより、JBoss Transactions ベースの完全に機能するトランザクションマネージャーで、DummyTransactionManager の機能上の制限が解消されます。
org.infinispan.transaction.lookup.GenericTransactionManagerLookup GenericTransactionManagerLookup は、トランザクションルックアップクラスが指定されていない場合にデフォルトで使用されます。このルックアップクラスは、TransactionManager インターフェースを提供する Java EE 互換環境で JBoss Data Grid を使用する場合に推奨され、ほとんどの Java EE アプリケーションサーバーでトランザクションマネージャーを見つけるために使用できます。トランザクションマネージャーが見つからない場合、デフォルトは DummyTransactionManager になります。
org.infinispan.transaction.lookup.JBossTransactionManagerLookup JbossTransactionManagerLookup は、アプリケーションサーバーで実行中の標準的なトランザクションマネージャーを見つけます。このルックアップクラスは JNDI を使用して TransactionManager インスタンスを検索します。これは、カスタムキャッシュが JTA トランザクションで使用されている場合に推奨されます。

25.2.2. トランザクションの設定 (リモートクライアントサーバーモード)

Red Hat JBoss Data Grid は、リモートクライアントサーバーモードでトランザクションを提供しません。デフォルトで、唯一サポートされている設定は、以下のようなトランザクションではない設定です。

例25.1 リモートクライアントサーバーモードでのトランザクション設定

<cache>
	<!-- Additional configuration elements here -->
 	<transaction mode="NONE" />
	<!-- Additional configuration elements here -->
</cache>

重要

リモートクライアントサーバーモードでは、JBoss Data Grid が互換モードで使用され、クラスターに JBoss Data Grid サーバーインスタンスとライブラリーインスタンスの両方が含まれない限り、トランザクション要素が NONE に設定されます。このときにトランザクションがライブラリーモードインスタンスで設定される場合は、サーバーインスタンスでもトランザクションを設定する必要があります。