
复制public T doExecute(Object... args) throws Throwable { Connection conn = statementProxy.getConnection(); // ... ... try { // ... ... while (true) { try { // ... ... if (RootContext.inGlobalTransaction() || RootContext.requireGlobalLock()) { // Do the same thing under either @GlobalTransactional or @GlobalLock,详解 // that onlycheck the global lock here. statementProxy.getConnectionProxy().checkLock(lockKeys); } else { throw new RuntimeException("Unknown situation!"); } break; } catch (LockConflictException lce) { if (sp != null) { conn.rollback(sp); } else { conn.rollback(); } // trigger retry lockRetryController.sleep(lce); } } } finally { // ... } 1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.