public void connectionClosed ( ConnectionEvent e ) { // overridden from base class, to NOT set discarded ResourceTransaction restx = unsetResourceTransaction (); if ( restx != null ) suspendResourceTransaction ( restx ); else { // if not in tx, then don't wait until tx finishes to reuse! setDiscarded (); ConnectionEvent e2 = new ConnectionEvent ( this ); Enumeration enumm = listeners_.elements (); while ( enumm.hasMoreElements () ) { ConnectionEventListener l = (ConnectionEventListener) enumm .nextElement (); l.connectionClosed ( e2 ); } } }
public void afterCompletion ( Object state ) { // this method is called once for every // SQL method done in this transaction // so don't repeat this every time if ( afterCompletionDone_ ) return; if ( state.equals ( TxState.TERMINATED ) || state.equals ( TxState.HEUR_MIXED ) || state.equals ( TxState.HEUR_HAZARD ) || state.equals ( TxState.HEUR_ABORTED ) || state.equals ( TxState.HEUR_COMMITTED ) ) { // connection is reusable! setDiscarded (); // next, notify listeners of REAL close event. ConnectionEvent e2 = new ConnectionEvent ( this ); Enumeration enumm = listeners_.elements (); while ( enumm.hasMoreElements () ) { ConnectionEventListener l = (ConnectionEventListener) enumm .nextElement (); l.connectionClosed ( e2 ); } afterCompletionDone_ = true; } // System.out.println ( "afterCompletion ( " + state + " )" ); }
getTransactionalResource (), getLogWriter () ); } else { ret = new ExclusiveExternalXAPooledConnectionImp ( conn, getTransactionalResource (), getLogWriter () );