巴拉特;
它们是不同的对象实例,但只有一个事务管理器。您所看到的只是内部 Arjuna 事务管理器核心的两个不同包装器/代理。此代码从两个不同的代理获取当前事务,但实际事务 UUID 相同:
def txManager = mbeanserver.getAttribute(JMXHelper.objectName("jboss:service=TransactionManager"), "TransactionManager");
TX.exec({
println txManager.getTransaction();
println mbeanserver.getAttribute(JMXHelper.objectName("jboss:service=TransactionManager"), "UserTransaction");
assert mbeanserver.getAttribute(JMXHelper.objectName("jboss:service=TransactionManager"), "UserTransaction").toString().replace("Transaction: ", "").equals(txManager.getTransaction().toString())
println "Timeout:${txManager.getTransactionTimeout()}";
});
txManager.setTransactionTimeout(200);
TX.exec({
println txManager.getTransaction();
println mbeanserver.getAttribute(JMXHelper.objectName("jboss:service=TransactionManager"), "UserTransaction");
assert mbeanserver.getAttribute(JMXHelper.objectName("jboss:service=TransactionManager"), "UserTransaction").toString().replace("Transaction: ", "").equals(txManager.getTransaction().toString())
println "Timeout:${txManager.getTransactionTimeout()}";
});
输出:
TransactionImple < ac,BasicAction:ae60d43:d590:4ffc7013:265841 状态:ActionStatus.RUNNING > 事务:TransactionImple < ac,BasicAction:ae60d43:d590:4ffc7013:265841 状态:ActionStatus.RUNNING > Timeout:200 TransactionImple < 3 ac,BasicAction:ae60 :d590:4ffc7013:265842 状态:ActionStatus.RUNNING > 事务:TransactionImple < ac,BasicAction:ae60d43:d590:4ffc7013:265842 状态:ActionStatus.RUNNING > 超时:400