25.2. トランザクションの設定
25.2.1. トランザクションの設定 (ライブラリーモード)
Red Hat JBoss Data Grid では、ライブラリーモードのトランザクションは、同期化およびトランザクションリカバリーと共に設定できます。トランザクションは全体として (同期化およびトランザクションリカバリーを含む)、リモートクライアントサーバーモードで使用することはできません。
ライブラリーモードでは、トランザクションは以下のように設定されます。
手順25.1 ライブラリーモードでのトランザクションの設定 (XML 設定)
トランザクションモードを設定します。
以下のテーブルで、利用可能なルックアップクラスのリストについての手順を確認します。<namedCache ...> <transaction transactionMode="{TRANSACTIONAL,NON_TRANSACTIONAL}"> ... </namedCache>
トランザクションマネージャーを設定します。
transactionMode
要素は、キャッシュがトランザクションであるかどうかを設定します。<namedCache ...> <transaction transactionMode="TRANSACTIONAL" transactionManagerLookupClass="{TransactionManagerLookupClass}"> </namedCache>
ロックモードを設定します。
lockingMode
パラメーターは、楽観的ロックまたは悲観的ロックのメソッドが使用されるかどうかを決定します。キャッシュが非トランザクションの場合、ロックモードは無視されます。このパラメーターのデフォルト値はOPTIMISTIC
です。<namedCache ...> <transaction transactionMode="TRANSACTIONAL" transactionManagerLookupClass="{TransactionManagerLookupClass}" lockingMode="{OPTIMISTIC,PESSIMISTIC}"> </namedCache>
同期化を指定します。
useSynchronization
要素は、トランザクションマネージャーを使って同期化を登録するようにキャッシュを設定するか、またはキャッシュ自体を XA リソースとして登録するようにキャッシュを設定します。この要素のデフォルト値はtrue
(同期化の使用) です。<namedCache ...> <transaction transactionMode="TRANSACTIONAL" transactionManagerLookupClass="{TransactionManagerLookupClass}" lockingMode="{OPTIMISTIC,PESSIMISTIC}" useSynchronization="{true,false}"> </namedCache>
リカバリーを設定します。
recovery
要素は、true
に設定されるとキャッシュのリカバリーを有効にします。recoveryInfoCacheName
パラメーターは、リカバリー情報が保持されるキャッシュの名前を設定します。キャッシュのデフォルト名は__recoveryInfoCacheName__
です。<namedCache ...> <transaction transactionMode="TRANSACTIONAL" transactionManagerLookupClass="{TransactionManagerLookupClass}" lockingMode="{OPTIMISTIC,PESSIMISTIC}" useSynchronization="{true,false}"> <recovery enabled="true" recoveryInfoCacheName="{CacheName}" /> </namedCache>
書き込みスキューチェックを設定します。
writeSkew
チェックは、異なるトランザクションからのエントリーに対する変更によりトランザクションがロールバックされるべきかどうかを判別します。true
に設定された書き込みスキューにより、isolation_level
をREPEATABLE_READ
に設定する必要があります。writeSkew
およびisolation_level
のデフォルト値はそれぞれfalse
とREAD_COMMITTED
です。<namedCache ...> <transaction ...> <locking isolation_level="{READ_COMMITTED,REPEATABLE_READ}" writeSkew="{true,false}" /> ... </namedCache>
エントリーのバージョン管理を設定します。
クラスター化されたキャッシュについては、エントリーのバージョン管理を有効にし、その値をSIMPLE
に設定することにより書き込みスキューのチェックを有効にします。<namedCache ...> <transaction ...> <locking ...> <versioning enabled="{true,false}" versioningScheme="{NONE|SIMPLE}"/> ... </namedCache>
手順25.2 ライブラリーモード (プログラムを用いた設定) でトランザクションを設定します。
トランザクションモードを設定します。
以下のようにトランザクションモードを設定します。Configuration config = new ConfigurationBuilder()/* ... */.transaction() .transactionMode(TransactionMode.TRANSACTIONAL);
トランザクションマネージャーを設定します。
以下のテーブルで、利用可能なルックアップクラスのリストについての手順を確認します。Configuration config = new ConfigurationBuilder()/* ... */.transaction() .transactionMode(TransactionMode.TRANSACTIONAL) .transactionManagerLookup(new GenericTransactionManagerLookup());
ロックモードを設定します。
lockingMode
値は、楽観的または悲観的ロックを使用するかどうかを決定します。キャッシュが非トランザクションの場合、ロックモードは無視されます。デフォルト値はOPTIMISTIC
です。Configuration config = new ConfigurationBuilder()/* ... */.transaction() .transactionMode(TransactionMode.TRANSACTIONAL) .transactionManagerLookup(new GenericTransactionManagerLookup()); .lockingMode(LockingMode.OPTIMISTIC);
同期化を指定します。
useSynchronization
値は、トランザクションマネージャーを使って同期化を登録するようにキャッシュを設定するか、またはキャッシュ自体を XA リソースとして登録するようにキャッシュを設定します。デフォルト値はtrue
(同期の使用) です。Configuration config = new ConfigurationBuilder()/* ... */.transaction() .transactionMode(TransactionMode.TRANSACTIONAL) .transactionManagerLookup(new GenericTransactionManagerLookup()); .lockingMode(LockingMode.OPTIMISTIC) .useSynchronization(true);
リカバリーを設定します。
recovery
パラメーターは、true
に設定されるとキャッシュのリカバリーを有効にします。recoveryInfoCacheName
は、リカバリー情報が保持されるキャッシュの名前を設定します。キャッシュのデフォルト名はRecoveryConfiguration.DEFAULT_RECOVERY_INFO_CACHE
によって指定されます。Configuration config = new ConfigurationBuilder()/* ... */.transaction() .transactionMode(TransactionMode.TRANSACTIONAL) .transactionManagerLookup(new GenericTransactionManagerLookup()); .lockingMode(LockingMode.OPTIMISTIC) .useSynchronization(true) .recovery() .recoveryInfoCacheName("anotherRecoveryCacheName");
書き込みスキューチェックを設定します。
writeSkew
チェックは、異なるトランザクションからのエントリーに対する変更によりトランザクションがロールバックされるべきかどうかを判別します。true
に設定された書き込みスキューにより、isolation_level
をREPEATABLE_READ
に設定する必要があります。writeSkew
およびisolation_level
のデフォルト値はそれぞれfalse
とREAD_COMMITTED
です。Configuration config = new ConfigurationBuilder()/* ... */.locking() .isolationLevel(IsolationLevel.REPEATABLE_READ).writeSkewCheck(true);
エントリーのバージョン管理を設定します。
クラスター化されたキャッシュについては、エントリーのバージョン管理を有効にし、その値をSIMPLE
に設定することにより書き込みスキューのチェックを有効にします。Configuration config = new ConfigurationBuilder()/* ... */.versioning() .enable() .scheme(VersioningScheme.SIMPLE);
クラス名 | 説明 |
---|---|
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> ... <transaction mode="NONE" /> ... </cache>
重要
リモートクライアントサーバーモードでは、JBoss Data Grid が互換モードで使用され、クラスターに JBoss Data Grid サーバーインスタンスとライブラリーインスタンスの両方が含まれない限り、トランザクション要素が
NONE
に設定されます。このときにトランザクションがライブラリーモードインスタンスで設定される場合は、サーバーインスタンスでもトランザクションを設定する必要があります。