@Override
    public void errorOccurred(SIConnectionLostException exception, // F174602
                              int segmentType,
                              int requestNumber,
                              int priority,
                              Conversation conversation) {
        if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
            SibTr.entry(this, tc, "errorOccurred",
                        new Object[]
                        {
                         exception,
                         "" + segmentType,
                         "" + requestNumber,
                         "" + priority,
                         conversation
                        });

        // Check and see if we think this is a heartbeat timeout. If it is, don't FFDC.
        Throwable cause = exception.getCause();
        if (cause != null && cause instanceof JFapHeartbeatTimeoutException) {
            if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
                SibTr.debug(this, tc, "Error is due to heartbeat timeout");
        } else {
            FFDCFilter.processException(exception,
                                        CLASS_NAME + ".errorOccurred",
                                        CommsConstants.SERVERTRANSPORTRECEIVELISTENER_ERROR_01,
                                        this);
        }

        if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
            Object[] debug =
            {
             "Segment type  : " + segmentType + " (0x" + Integer.toHexString(segmentType) + ")",
             "Request number: " + requestNumber,
             "Priority      : " + priority
            };

            SibTr.debug(this, tc, "Received an error in the ServerTransportReceiveListener", debug);
            SibTr.debug(this, tc, "Primary exception:", exception);
        }

        // D363790 removed the call to cleanupConnection().
        // This is because we will now rely on the ConnectionClosedListener to trigger the connection
        // cleanup as that will be driven not only on error conditions but also on normal socket
        // closure as well.

        if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
            SibTr.exit(this, tc, "errorOccurred");
    }
@ Override public void errorOccurred ( SIConnectionLostException exception , int segmentType , int requestNumber , int priority , Conversation conversation ) { if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isEntryEnabled ( ) ) SibTr . entry ( this , tc , "errorOccurred" , new Object [ ] { exception , "" + segmentType , "" + requestNumber , "" + priority , conversation } ) ; Throwable cause = exception . getCause ( ) ; if ( cause != null && cause instanceof JFapHeartbeatTimeoutException ) { if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isDebugEnabled ( ) ) SibTr . debug ( this , tc , "Error is due to heartbeat timeout" ) ; } else { FFDCFilter . processException ( exception , CLASS_NAME + ".errorOccurred" , CommsConstants . SERVERTRANSPORTRECEIVELISTENER_ERROR_01 , this ) ; } if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isDebugEnabled ( ) ) { Object [ ] debug = { "Segment type  : " + segmentType + " (0x" + Integer . toHexString ( segmentType ) + ")" , "Request number: " + requestNumber , "Priority      : " + priority } ; SibTr . debug ( this , tc , "Received an error in the ServerTransportReceiveListener" , debug ) ; SibTr . debug ( this , tc , "Primary exception:" , exception ) ; } if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isEntryEnabled ( ) ) SibTr . exit ( this , tc , "errorOccurred" ) ; }
This method is called by the JFAP channel when it detects a serious error.
At this point we should spit out all the info we have and close the connection
to the ME. This will ensure that the ME realises that we have died and
shutdown any resources we own accordingly.

@param exception
@param segmentType
@param requestNumber
@param priority
@param conversation