public void rollback(Xid xid) throws XAException {
if (_logger.isLoggable(Level.FINE)) {
_logger.log(Level.FINE, "XAResourceImpl:rollback(), the Xid is:" + xid + " rmid=" + _rmid + " thread=" + Thread.currentThread().getId());
}
xid = createGSXid(xid);
try {
m_txnManger.abort(xid, COMMIT_ABORT_DEFAULT_TIMEOUT);
} catch (UnknownTransactionException e) {
if (failOnInvalidRollback)
_logger.log(Level.SEVERE, "XAResourceImpl:rollback() , unknownTxnException rmid=" + _rmid + " thread=" + Thread.currentThread().getId() + " exception:" + e + e.getStackTrace());
throw createsXAException(XAException.XA_RBPROTO, e);
} catch (CannotAbortException e) {
_logger.log(Level.SEVERE, "XAResourceImpl:rollback() , CannotAbortException rmid=" + _rmid + " thread=" + Thread.currentThread().getId() + " exception:" + e + e.getStackTrace());
throw createsXAException(XAException.XA_RBPROTO, e);
} catch (RemoteException e) {
_logger.log(Level.SEVERE, "XAResourceImpl:rollback() , remoteException rmid=" + _rmid + " thread=" + Thread.currentThread().getId() + " exception:" + e + e.getStackTrace());
throw createsXAException(XAException.XA_RBCOMMFAIL, e);
} catch (TimeoutExpiredException e) {
_logger.log(Level.SEVERE, "XAResourceImpl:rollback() , timeoutException rmid=" + _rmid + " thread=" + Thread.currentThread().getId() + " exception:" + e + e.getStackTrace());
throw createsXAException(XAException.XAER_RMFAIL, e);
} finally {
_activeEmptyTransactions.remove(xid);
_suspendedXtns.remove(xid);
if (_resourcePerSingleTxn)
_relevantTx = false;
}
}