es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Infinispan – Administrador de transacciones sobre la API de cliente Hot Rod

Estoy utilizando Infinispan 12.0.2 FINAL a través del cliente Hot Rod, pero no puedo hacer que el administrador de transacciones funcione.

Aquí está cómo estoy configurando mis cachés:

ConfigurationBuilder builder = new ConfigurationBuilder();
builder.clustering().cacheMode(CacheMode.DIST_SYNC);
builder.locking().isolationLevel(IsolationLevel.REPEATABLE_READ);
builder.transaction().lockingMode(LockingMode.PESSIMISTIC);
builder.transaction().transactionMode(org.infinispan.transaction.TransactionMode.TRANSACTIONAL);
builder.transaction().transactionManagerLookup(org.infinispan.client.hotrod.transaction.lookup.GenericTransactionManagerLookup.getInstance());
rcm.administration().withFlags(CacheContainerAdmin.AdminFlag.VOLATILE).getOrCreateCache(cacheName,
builder.build());

Pero cada vez que intento acceder a la transacción a través de remoteCache.getTransactionManager, obtengo un valor nulo para el administrador de transacciones. No puedo encontrar el problema. Por favor ayúdame con esto.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que la configuración para la caché es correcta, pero el problema puede estar en la forma en que se está tratando de acceder al TransactionManager. Aquí hay algunas cosas que debe verificar:

    1. Asegúrese de que la caché a la que está tratando de acceder sea transaccional. Puede verificar esto utilizando cache.getCacheConfiguration() y asegurándose de que transaction().transactionMode() esté configurado en TRANSACTIONAL.
    2. Verifique que GenericTransactionManagerLookup pueda ubicar un administrador de transacciones. Si está ejecutando esto en una máquina local, puede intentar usar org.infinispan.transaction.lookup.GenericTransactionManagerLookup.getInstance() en su lugar.

    3. Verifique que el cliente hotrod esté configurado correctamente para trabajar con transacciones. Puede verificar esto comprobando la clase infinispan.client.hotrod.transaction.TransactionManagerFactory, que debería estar presente en la ruta de acceso de la clase del cliente.

    Si ninguna de las opciones anteriores funciona, es posible que deba proporcionar información adicional sobre su configuración y los mensajes de error específicos que está encontrando para ayudar a identificar la causa raíz.

Comments are closed.