2

是否符合javax.transaction.Transaction需要是线程安全的?

这个实现是否有望处理来自不同线程的并发请求?

举个例子:

// Thread A
transaction.commit();

// Thread B, while that commit is still running
transaction.setRollbackOnly();

我问这个问题是因为我可以看到 Infinispan 以这种方式与事务管理器交互,这会导致死锁。我想了解这是否是 Infinispan 或事务管理器中的错误。

4

1 回答 1

2

JTA说:

§3.3 - 交易接口

和方法允许提交Transaction.commitTransaction.rollback回滚目标对象。调用线程不需要具有与该线程关联的相同事务。如果不允许调用线程提交事务,事务管理器会抛出异常。

规范没有说明这一点。因此,预先不需要供应商必须提供javax.transaction.Transaction.

于 2020-09-06T23:43:05.670 回答