@ Override protected void dumpJFapClientStatus ( IncidentStream is ) { if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isEntryEnabled ( ) ) SibTr . entry ( this , tc , "dumpJFapClientStatus" ) ; ClientConnectionManager ccm = ClientConnectionManager . getRef ( ) ; List obc = ccm . getActiveOutboundConversationsForFfdc ( ) ; is . writeLine ( "\n------ Client Conversation Dump ------ " , ">" ) ; if ( obc != null ) { // Build a map of connection -> conversation so that we can output the // connection information once per set of conversations. final Map < Object , LinkedList < Conversation > > connectionToConversationMap = convertToMap ( is , obc ) ; // Go through the map and dump out a connection - followed by its conversations for ( Iterator < Entry < Object , LinkedList < Conversation > > > i = connectionToConversationMap . entrySet ( ) . iterator ( ) ; i . hasNext ( ) ; ) { final Entry < Object , LinkedList < Conversation > > entry = i . next ( ) ; is . writeLine ( "\nOutbound connection:" , entry . getKey ( ) ) ; LinkedList conversationList = entry . getValue ( ) ; while ( ! conversationList . isEmpty ( ) ) { Conversation c = ( Conversation ) conversationList . removeFirst ( ) ; is . writeLine ( "\nOutbound Conversation[" + c . getId ( ) + "]: " , c . getFullSummary ( ) ) ; try { dumpClientConversation ( is , c ) ; } catch ( Throwable t ) { // No FFDC Code Needed is . writeLine ( "\nUnable to dump conversation" , t ) ; } } } } else { is . writeLine ( "\nUnable to fetch list of conversations" , "" ) ; } if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isEntryEnabled ( ) ) SibTr . exit ( this , tc , "dumpJFapClientStatus" ) ; }
This method dumps the status of any client conversations that are currently active . It does this by asking the JFap outbound connection tracker for its list of active conversations and then has a look at the conversation states . All this information is captured in the FFDC incident stream