private void callExceptionListener(JMSException e) {
        if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
            SibTr.entry(this, tc, "callExceptionListener");

        // Get the latest version of the ExceptionListener (after this point we're
        // going to call that one regardless of whether it changes
        ExceptionListener elLocal = elRef.get();
        if (elLocal != null) {
            // Protect our code from badly behaved exception listeners.
            try {
                // Trace the class and hashcode of the exception
                if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
                    SibTr.debug(this, tc, "Exception handler class: " + elLocal.getClass().getName());
                    SibTr.debug(this, tc, "Exception: ", e);
                }

                // Pass the exception on.
                elLocal.onException(e);
            } catch (RuntimeException exc) {
                // No FFDC code needed
                if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
                    SibTr.debug(this, tc, "User ExceptionListener threw exception", exc);
            }
        }
        else {
            if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
                SibTr.debug(this, tc, "No exception listener is currently set for this connection.");
        }

        if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
            SibTr.exit(this, tc, "callExceptionListener");
    }
private void callExceptionListener ( JMSException e ) { if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isEntryEnabled ( ) ) SibTr . entry ( this , tc , "callExceptionListener" ) ; ExceptionListener elLocal = elRef . get ( ) ; if ( elLocal != null ) { try { if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isDebugEnabled ( ) ) { SibTr . debug ( this , tc , "Exception handler class: " + elLocal . getClass ( ) . getName ( ) ) ; SibTr . debug ( this , tc , "Exception: " , e ) ; } elLocal . onException ( e ) ; } catch ( RuntimeException exc ) { if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isDebugEnabled ( ) ) SibTr . debug ( this , tc , "User ExceptionListener threw exception" , exc ) ; } } else { if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isDebugEnabled ( ) ) SibTr . debug ( this , tc , "No exception listener is currently set for this connection." ) ; } if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isEntryEnabled ( ) ) SibTr . exit ( this , tc , "callExceptionListener" ) ; }
/*
(non-Javadoc)

@see com.ibm.ws.sib.api.jms.JmsConnection#reportException(javax.jms.JMSException)
This method directly invokes any registered exception listener.
No locks are taken by this method, so it is the caller's responsibility to
take any locks that may be needed.