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


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

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

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

  1. トランザクションモードを設定します。

    以下のテーブルで、利用可能なルックアップクラスのリストについての手順を確認します。
    <namedCache ...>
    	<transaction transactionMode="{TRANSACTIONAL,NON_TRANSACTIONAL}">
            ...
    </namedCache>
  2. トランザクションマネージャーを設定します。

    transactionMode 要素は、キャッシュがトランザクションであるかどうかを設定します。
    <namedCache ...>
    	<transaction transactionMode="TRANSACTIONAL"
    		     transactionManagerLookupClass="{TransactionManagerLookupClass}">
    </namedCache>
  3. ロックモードを設定します。

    lockingMode パラメーターは、楽観的ロックまたは悲観的ロックのメソッドが使用されるかどうかを決定します。キャッシュが非トランザクションの場合、ロックモードは無視されます。このパラメーターのデフォルト値は OPTIMISTIC です。
    <namedCache ...>
    	<transaction transactionMode="TRANSACTIONAL"
    		     transactionManagerLookupClass="{TransactionManagerLookupClass}"
    		     lockingMode="{OPTIMISTIC,PESSIMISTIC}">
    </namedCache>
  4. 同期化を指定します。

    useSynchronization 要素は、トランザクションマネージャーを使って同期化を登録するようにキャッシュを設定するか、またはキャッシュ自体を XA リソースとして登録するようにキャッシュを設定します。この要素のデフォルト値は true (同期化の使用) です。
    <namedCache ...>
    	<transaction transactionMode="TRANSACTIONAL"
    		     transactionManagerLookupClass="{TransactionManagerLookupClass}"
    		     lockingMode="{OPTIMISTIC,PESSIMISTIC}"
    		     useSynchronization="{true,false}">
    </namedCache>
  5. リカバリーを設定します。

    recovery 要素は、true に設定されるとキャッシュのリカバリーを有効にします。
    recoveryInfoCacheName パラメーターは、リカバリー情報が保持されるキャッシュの名前を設定します。キャッシュのデフォルト名は __recoveryInfoCacheName__ です。
    <namedCache ...>
    	<transaction transactionMode="TRANSACTIONAL"
    		     transactionManagerLookupClass="{TransactionManagerLookupClass}"
    		     lockingMode="{OPTIMISTIC,PESSIMISTIC}"
    		     useSynchronization="{true,false}">
    		<recovery enabled="true" 
    			  recoveryInfoCacheName="{CacheName}" />
    </namedCache>
  6. 書き込みスキューチェックを設定します。

    writeSkew チェックは、異なるトランザクションからのエントリーに対する変更によりトランザクションがロールバックされるべきかどうかを判別します。true に設定された書き込みスキューにより、isolation_levelREPEATABLE_READ に設定する必要があります。writeSkew および isolation_level のデフォルト値はそれぞれ falseREAD_COMMITTED です。
    <namedCache ...>   
    	<transaction ...>
    	<locking isolation_level="{READ_COMMITTED,REPEATABLE_READ}" 
    	 	 writeSkew="{true,false}" />
            ...
    </namedCache>
  7. エントリーのバージョン管理を設定します。

    クラスター化されたキャッシュについては、エントリーのバージョン管理を有効にし、その値を SIMPLE に設定することにより書き込みスキューのチェックを有効にします。
    <namedCache ...>
    	<transaction ...>
    	<locking ...>
    	<versioning enabled="{true,false}" 
    		    versioningScheme="{NONE|SIMPLE}"/>
            ...
    </namedCache>

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

  1. トランザクションモードを設定します。

    以下のようにトランザクションモードを設定します。
    Configuration config = new ConfigurationBuilder()/* ... */.transaction()
            .transactionMode(TransactionMode.TRANSACTIONAL);
  2. トランザクションマネージャーを設定します。

    以下のテーブルで、利用可能なルックアップクラスのリストについての手順を確認します。
    Configuration config = new ConfigurationBuilder()/* ... */.transaction()
            .transactionMode(TransactionMode.TRANSACTIONAL)
            .transactionManagerLookup(new GenericTransactionManagerLookup());
  3. ロックモードを設定します。

    lockingMode 値は、楽観的または悲観的ロックを使用するかどうかを決定します。キャッシュが非トランザクションの場合、ロックモードは無視されます。デフォルト値は OPTIMISTIC です。
    Configuration config = new ConfigurationBuilder()/* ... */.transaction()
            .transactionMode(TransactionMode.TRANSACTIONAL)
            .transactionManagerLookup(new GenericTransactionManagerLookup());
            .lockingMode(LockingMode.OPTIMISTIC);
  4. 同期化を指定します。

    useSynchronization 値は、トランザクションマネージャーを使って同期化を登録するようにキャッシュを設定するか、またはキャッシュ自体を XA リソースとして登録するようにキャッシュを設定します。デフォルト値は true (同期の使用) です。
    Configuration config = new ConfigurationBuilder()/* ... */.transaction()
            .transactionMode(TransactionMode.TRANSACTIONAL)
            .transactionManagerLookup(new GenericTransactionManagerLookup());
            .lockingMode(LockingMode.OPTIMISTIC)
            .useSynchronization(true);
  5. リカバリーを設定します。

    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");
  6. 書き込みスキューチェックを設定します。

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

    クラスター化されたキャッシュについては、エントリーのバージョン管理を有効にし、その値を 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>
	...
 	<transaction mode="NONE" />
	...
</cache>

重要

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

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.