Ce contenu n'est pas disponible dans la langue sélectionnée.

25.2. Configure Transactions


25.2.1. Configure Transactions (Library Mode)

In Red Hat JBoss Data Grid, transactions in Library mode can be configured with synchronization and transaction recovery. Transactions in their entirety (which includes synchronization and transaction recovery) are not available in Remote Client-Server mode.
In Library mode, transactions are configured as follows:

Procedure 25.1. Configure Transactions in Library Mode (XML Configuration)

  1. Set the Transaction Mode

    See the table below this procedure for a list of available lookup classes.
    <namedCache ...>
    	<transaction transactionMode="{TRANSACTIONAL,NON_TRANSACTIONAL}">
            ...
    </namedCache>
    Copy to Clipboard Toggle word wrap
  2. Configure the Transaction Manager

    The transactionMode element configures whether or not the cache is transactional.
    <namedCache ...>
    	<transaction transactionMode="TRANSACTIONAL"
    		     transactionManagerLookupClass="{TransactionManagerLookupClass}">
    </namedCache>
    Copy to Clipboard Toggle word wrap
  3. Configure Locking Mode

    The lockingMode parameter determines if the optimistic or pessimistic locking method is used. If the cache is non-transactional, the locking mode is ignored. The default value for this parameter is OPTIMISTIC.
    <namedCache ...>
    	<transaction transactionMode="TRANSACTIONAL"
    		     transactionManagerLookupClass="{TransactionManagerLookupClass}"
    		     lockingMode="{OPTIMISTIC,PESSIMISTIC}">
    </namedCache>
    Copy to Clipboard Toggle word wrap
  4. Specify Synchronization

    The useSynchronization element configures the cache to register a synchronization with the transaction manager, or register itself as an XA resource. The default value for this element is true (use synchronization).
    <namedCache ...>
    	<transaction transactionMode="TRANSACTIONAL"
    		     transactionManagerLookupClass="{TransactionManagerLookupClass}"
    		     lockingMode="{OPTIMISTIC,PESSIMISTIC}"
    		     useSynchronization="{true,false}">
    </namedCache>
    Copy to Clipboard Toggle word wrap
  5. Configure Recovery

    The recovery element enables recovery for the cache when set to true.
    The recoveryInfoCacheName parameter sets the name of the cache where recovery information is held. The default name of the cache is __recoveryInfoCacheName__.
    <namedCache ...>
    	<transaction transactionMode="TRANSACTIONAL"
    		     transactionManagerLookupClass="{TransactionManagerLookupClass}"
    		     lockingMode="{OPTIMISTIC,PESSIMISTIC}"
    		     useSynchronization="{true,false}">
    		<recovery enabled="true" 
    			  recoveryInfoCacheName="{CacheName}" />
    </namedCache>
    Copy to Clipboard Toggle word wrap
  6. Configure the Write Skew Check

    The writeSkew check determines if a modification to the entry from a different transaction should roll back the transaction. Write skew set to true requires isolation_level set to REPEATABLE_READ. The default value for writeSkew and isolation_level are false and READ_COMMITTED respectively.
    <namedCache ...>   
    	<transaction ...>
    	<locking isolation_level="{READ_COMMITTED,REPEATABLE_READ}" 
    	 	 writeSkew="{true,false}" />
            ...
    </namedCache>
    Copy to Clipboard Toggle word wrap
  7. Configure Entry Versioning

    For clustered caches, enable write skew check by enabling entry versioning and setting its value to SIMPLE.
    <namedCache ...>
    	<transaction ...>
    	<locking ...>
    	<versioning enabled="{true,false}" 
    		    versioningScheme="{NONE|SIMPLE}"/>
            ...
    </namedCache>
    Copy to Clipboard Toggle word wrap

Procedure 25.2. Configure Transactions in Library Mode (Programmatic Configuration)

  1. Set the Transaction Mode

    Set the transaction mode as follows:
    Configuration config = new ConfigurationBuilder()/* ... */.transaction()
            .transactionMode(TransactionMode.TRANSACTIONAL);
    Copy to Clipboard Toggle word wrap
  2. Configure the Transaction Manager

    See the table below this procedure for a list of available lookup classes.
    Configuration config = new ConfigurationBuilder()/* ... */.transaction()
            .transactionMode(TransactionMode.TRANSACTIONAL)
            .transactionManagerLookup(new GenericTransactionManagerLookup());
    Copy to Clipboard Toggle word wrap
  3. Configure Locking Mode

    The lockingMode value determines whether optimistic or pessimistic locking is used. If the cache is non-transactional, the locking mode is ignored. The default value is OPTIMISTIC.
    Configuration config = new ConfigurationBuilder()/* ... */.transaction()
            .transactionMode(TransactionMode.TRANSACTIONAL)
            .transactionManagerLookup(new GenericTransactionManagerLookup());
            .lockingMode(LockingMode.OPTIMISTIC);
    Copy to Clipboard Toggle word wrap
  4. Specify Synchronization

    The useSynchronization value configures the cache to register a synchronization with the transaction manager, or register itself as an XA resource. The default value is true (use synchronization).
    Configuration config = new ConfigurationBuilder()/* ... */.transaction()
            .transactionMode(TransactionMode.TRANSACTIONAL)
            .transactionManagerLookup(new GenericTransactionManagerLookup());
            .lockingMode(LockingMode.OPTIMISTIC)
            .useSynchronization(true);
    Copy to Clipboard Toggle word wrap
  5. Configure Recovery

    The recovery parameter enables recovery for the cache when set to true.
    The recoveryInfoCacheName sets the name of the cache where recovery information is held. The default name of the cache is specified by RecoveryConfiguration.DEFAULT_RECOVERY_INFO_CACHE.
    Configuration config = new ConfigurationBuilder()/* ... */.transaction()
            .transactionMode(TransactionMode.TRANSACTIONAL)
            .transactionManagerLookup(new GenericTransactionManagerLookup());
            .lockingMode(LockingMode.OPTIMISTIC)
            .useSynchronization(true)
            .recovery()
                .recoveryInfoCacheName("anotherRecoveryCacheName");
    Copy to Clipboard Toggle word wrap
  6. Configure Write Skew Check

    The writeSkew check determines if a modification to the entry from a different transaction should roll back the transaction. Write skew set to true requires isolation_level set to REPEATABLE_READ. The default value for writeSkew and isolation_level are false and READ_COMMITTED respectively.
    Configuration config = new ConfigurationBuilder()/* ... */.locking()
            .isolationLevel(IsolationLevel.REPEATABLE_READ).writeSkewCheck(true);
    Copy to Clipboard Toggle word wrap
  7. Configure Entry Versioning

    For clustered caches, enable write skew check by enabling entry versioning and setting its value to SIMPLE.
    Configuration config = new ConfigurationBuilder()/* ... */.versioning()
            .enable()
            .scheme(VersioningScheme.SIMPLE);
    Copy to Clipboard Toggle word wrap
Expand
Table 25.1. Transaction Manager Lookup Classes
Class Name Details
org.infinispan.transaction.lookup.DummyTransactionManagerLookup Used primarily for testing environments. This testing transaction manager is not for use in a production environment and is severely limited in terms of functionality, specifically for concurrent transactions and recovery.
org.infinispan.transaction.lookup.JBossStandaloneJTAManagerLookup The default transaction manager when Red Hat JBoss Data Grid runs in a standalone environment. It is a fully functional JBoss Transactions based transaction manager that overcomes the functionality limits of the DummyTransactionManager.
org.infinispan.transaction.lookup.GenericTransactionManagerLookup GenericTransactionManagerLookup is used by default when no transaction lookup class is specified. This lookup class is recommended when using JBoss Data Grid with Java EE-compatible environment that provides a TransactionManager interface, and is capable of locating the Transaction Manager in most Java EE application servers. If no transaction manager is located, it defaults to DummyTransactionManager.
org.infinispan.transaction.lookup.JBossTransactionManagerLookup The JbossTransactionManagerLookup finds the standard transaction manager running in the application server. This lookup class uses JNDI to look up the TransactionManager instance, and is recommended when custom caches are being used in JTA transactions.

25.2.2. Configure Transactions (Remote Client-Server Mode)

Red Hat JBoss Data Grid does not offer transactions in Remote Client-Server mode. The default and only supported configuration is non-transactional, which is set as follows:

Example 25.1. Transaction Configuration in Remote Client-Server Mode

<cache>
	...
 	<transaction mode="NONE" />
	...
</cache>
Copy to Clipboard Toggle word wrap

Important

In Remote Client-Server mode, the transactions element is set to NONE unless JBoss Data Grid is used in a compatibility mode where the cluster contains both JBoss Data Grid server and library instances. In this case, if transactions are configured in the library mode instance, they must also be configured in the server instance.
Retour au début
Red Hat logoGithubredditYoutubeTwitter

Apprendre

Essayez, achetez et vendez

Communautés

À propos de la documentation Red Hat

Nous aidons les utilisateurs de Red Hat à innover et à atteindre leurs objectifs grâce à nos produits et services avec un contenu auquel ils peuvent faire confiance. Découvrez nos récentes mises à jour.

Rendre l’open source plus inclusif

Red Hat s'engage à remplacer le langage problématique dans notre code, notre documentation et nos propriétés Web. Pour plus de détails, consultez le Blog Red Hat.

À propos de Red Hat

Nous proposons des solutions renforcées qui facilitent le travail des entreprises sur plusieurs plates-formes et environnements, du centre de données central à la périphérie du réseau.

Theme

© 2025 Red Hat