in geronimo-connector/src/main/java/org/apache/geronimo/connector/outbound/TransactionEnlistingInterceptor.java [88:114]
public void returnConnection(ConnectionInfo connectionInfo,
ConnectionReturnAction connectionReturnAction) {
try {
ManagedConnectionInfo mci = connectionInfo.getManagedConnectionInfo();
Transaction transaction = TxUtil.getTransactionIfActive(transactionManager);
if (transaction != null) {
XAResource xares = mci.getXAResource();
if (log.isLoggable(Level.FINEST)) {
log.log(Level.FINEST,"Delisting connection " + connectionInfo + " with XAResource " + xares + " in transaction: " + transaction, new Exception("stack trace"));
}
transaction.delistResource(xares, XAResource.TMSUSPEND);
} else {
if (log.isLoggable(Level.FINEST)) {
log.log(Level.FINEST,"not delisting connection " + connectionInfo + " with XAResource " + mci.getXAResource() + " no transaction");
}
}
} catch (SystemException e) {
//maybe we should warn???
log.log(Level.INFO,"Could not delist resource: " + connectionInfo + " with XAResource: " + connectionInfo.getManagedConnectionInfo().getXAResource(), e);
connectionReturnAction = ConnectionReturnAction.DESTROY;
} catch (IllegalStateException e) {
connectionReturnAction = ConnectionReturnAction.DESTROY;
}
next.returnConnection(connectionInfo, connectionReturnAction);
}