public void dissociateConnections() throws ResourceException 
    {
        final boolean isTraceOn = TraceComponent.isAnyTracingEnabled();

        if (isTraceOn && tc.isEntryEnabled())
            Tr.entry(this, tc, "dissociateConnections"); 

        // The first exception to occur while dissociating connection handles.
        ResourceException firstX = null;

        // Indicate that we are cleaning up handles, so we know not to send events for
        // operations done in the cleanup. 
        cleaningUpHandles = true;

        for (int i = numHandlesInUse; i > 0;)
            try 
            {
                handlesInUse[--i].dissociate(); 
                handlesInUse[i] = null; 
            } catch (ResourceException dissociationX) {
                // No FFDC code needed because the following method does any FFDC that might
                // be necessary.
                dissociationX = processHandleDissociationError(i, dissociationX);
                if (firstX == null)
                    firstX = dissociationX;
            }

        numHandlesInUse = 0; 
        cleaningUpHandles = false;

        // - need to dissociate the cachedConnection too
        // - we can't dissocate the cachedConnection because DB2 has direct access to our WSJccConnection
        // and the preparedStatement wrapper. They can't follow the normal jdbc model because the sqlj engine
        // was written by Oracle. Therefore, we put the restriction that the BMP must run in a unshareable mode
        // it caches the handle. In this case, we never need to dissociate the cached handle.
        /*
         * try
         * if (cachedConnection != null)
         * ((Reassociateable)cachedConnection).dissociate();
         * }catch (ResourceException dissociationX2)
         * // No FFDC code needed because the following method does any FFDC that might
         * // be necessary.
         * dissociationX2 = processHandleDissociationError2((Reassociateable)cachedConnection, dissociationX2);
         * if (firstX == null) firstX = dissociationX2;
         */
        if (firstX != null) {
            if (isTraceOn && tc.isEntryEnabled())
                Tr.exit(this, tc, "dissociateConnections", firstX);
            throw firstX;
        }
        if (isTraceOn && tc.isEntryEnabled())
            Tr.exit(this, tc, "dissociateConnections");
    }
public void dissociateConnections ( ) throws ResourceException { final boolean isTraceOn = TraceComponent . isAnyTracingEnabled ( ) ; if ( isTraceOn && tc . isEntryEnabled ( ) ) Tr . entry ( this , tc , "dissociateConnections" ) ; ResourceException firstX = null ; cleaningUpHandles = true ; for ( int i = numHandlesInUse ; i > 0 ; ) try { handlesInUse [ -- i ] . dissociate ( ) ; handlesInUse [ i ] = null ; } catch ( ResourceException dissociationX ) { dissociationX = processHandleDissociationError ( i , dissociationX ) ; if ( firstX == null ) firstX = dissociationX ; } numHandlesInUse = 0 ; cleaningUpHandles = false ; if ( firstX != null ) { if ( isTraceOn && tc . isEntryEnabled ( ) ) Tr . exit ( this , tc , "dissociateConnections" , firstX ) ; throw firstX ; } if ( isTraceOn && tc . isEntryEnabled ( ) ) Tr . exit ( this , tc , "dissociateConnections" ) ; }
Dissociate all connection handles from this ManagedConnection, transitioning the handles
to an inactive state where are not associated with any ManagedConnection. Processing
continues when errors occur. All errors are logged, and the first error is saved to be
thrown when processing completes.

@throws ResourceException the first error to occur while dissociating the handles.