private void rollbackTransaction(NHttpServerConnection conn) { try { Long serverWorkerThreadId = (Long) conn.getContext().getAttribute( PassThroughConstants.SERVER_WORKER_THREAD_ID); if (serverWorkerThreadId != null) { TranscationManger.rollbackTransaction(false, serverWorkerThreadId); } } catch (Exception ex) { log.warn("Transaction rollback error after Connection closed " + ex.getMessage() + conn); } }
public static void bindConnection(final Connection conn) throws Exception { long key = Thread.currentThread().getId(); try { if (conn instanceof XAConnection) { Transaction tx = transactions.get().get(key); XAResource xaRes = ((XAConnection) conn).getXAResource(); if (!isXAResourceEnlisted(xaRes)) { tx.enlistResource(xaRes); addToEnlistedXADataSources(xaRes, key); log.debug(" DS enlisted in thread " + key + " XA Resource : "+ xaRes.hashCode()); } } } catch (Exception ex) { StringBuilder logMsg = new StringBuilder(); Connection actual = ((javax.sql.PooledConnection)conn).getConnection(); logMsg .append(" Thread Id : "+key) .append(" BIND ERROR , Transaction Manager status : " + txManagers.get().get(key).getStatus()) .append("\n") .append(" BIND ERROR , Transaction status : " + transactions.get().get(key).getStatus()) .append("\n") .append(" JDBC Connection status : " + actual.isClosed()) .append("\n") .append(" BIND ERROR : " + ex); log.error(logMsg.toString()); rollbackTransaction(true,key); throw ex; } }
TranscationManger.rollbackTransaction(true, key); } catch (Exception e) { handleException("Unable to rollback transaction", e, synCtx);