【发布时间】:2016-07-09 07:49:41
【问题描述】:
是否可以使用并发多线程从TransactionContext 访问TransactionalMap ..
已将xaResource 加入到现有事务中,使用transactionalContext,以获取TransactionalMap,并发*transMap,put(K,V)*,将我带到一个例外..
com.hazelcast.transaction.TransactionException: 事务无法获得密钥的锁定。 HazelCast 版本:3.6.3。
入伍:
HazelcastXAResource xaResource = hazelcastInstance.getXAResource();
Transaction transaction = userTransactionManager.getTransaction();
transaction.enlistResource(xaResource);
事务映射:
TransactionalMap<String,Serializable> transactionalMap=hcTransactionalContext.getMap("UUID");
Map<K,V> map = transactionalMap.get("uuid");
map.put(K,V);
例外 1:
com.hazelcast.transaction.TransactionException: Transaction couldn't obtain lock for the key: uuid
例外 2:
There is no suitable serializer for class com.hazelcast.map.impl.tx.TransactionalMapProxy
【问题讨论】:
-
您好,可以分享一个可执行的复制器吗?到目前为止我无法重现它。
-
重复前面提到的事务映射的相同步骤,两次,从两个不同的线程并行(Put),同时,将精确锁定在“transactionalMap.get("uuid");"
标签: java multithreading hazelcast jta distributed-transactions