IFW sending empty SOAP message body

book

Article ID: 220876

calendar_today

Updated On:

Products

CA Service Operations Insight (SOI) DX Application Performance Management

Issue/Introduction

 
 

Investigation from APM has shown that the IFW on SOI manager machine is acting as a web services client.

But, in these calls, it cannot determine the service name or operation name. However the graph shows that it is a regular call happening every minute
 
Using APM debug logs, the soap message body is empty as shown in the log excerpts below: 
 
6/07/21 02:33:47 PM CEST [DEBUG] [IntroscopeAgent.Agent] Axis2ClientNameFormatter::getChild(data): soapBody=<soapenv:Body xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope" />

6/07/21 02:33:47 PM CEST [DEBUG] [IntroscopeAgent.Agent] Axis2ClientNameFormatter::processInvocationData(data):  getChild(data) returns null; skip extracting namespace and operation info from SOAP object.
 
APM relies on the SOAP message body to determine namespace, operation names etc.
 
The part that could help to identify is seeing the information on the monitored SOI manager process which is formatted correctly
 
 
namespace is http://webservice.generic.connector.ifw.sam.ca.com
with operation haveEvents
 
There's a need to understand if it is normal that the IFW is sending an empty SOAP body here.
The impact is also with APM monitoring not being able to determine data for the call, so returns metrics as unknown.

Cause

 

The haveEvents web service from the SOI side is checking for the below queues:

 

eventQueue.isEmpty()

ciQueue.isEmpty()

serviceQueue.isEmpty()

serviceCIQueue.isEmpty()

serviceRelationshipQueue.isEmpty()

 

If all the above queues are empty then they will return blank response.

In this case, it simply returns Boolean values as false if everything is empty.

This is not impacting anything from the SOI side, this is expected behaviour.

 

Services and input information can be obtained using the below WSDL Url. 

As per haveEvents implementation, there is no input for this service.

 

http://<SOI_MGR>:7090/axis2/services/GenericConnectorService?wsdl

 

Using a SOAP client, such as SOAP-UI, all the services can be found into that with the sample request.

A blank request provides the expected response from the service. 

Requestè

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">

   <soapenv:Header/>

   <soapenv:Body>  

  <soapenv:Body>

</soapenv:Envelope>

 

Response :

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">

   <soapenv:Body>

      <ns:haveEventsResponse xmlns:ns="http://webservice.generic.connector.ifw.sam.ca.com">

         <ns:return>false</ns:return>

      </ns:haveEventsResponse>

   </soapenv:Body>

</soapenv:Envelope>"

As an aside, details such as the namespace are visible in the body of the response, this is why the server side (WebServices|Server) of the APM monitoring of the SOI manager process is actually reporting correct values.

Environment

Release : 4.2

Component : Service Operations Insight (SOI) Generic Connector

Resolution

 
 

So it is normal for IFW to send an empty SOAP body.

There is nothing that can be done on APM side in the current implementation, there is no way for it to determine the details of the webservice.

 

The GenericConnectorService in SOI has multiple web service operations, so it would be misleading to hard code the haveEvents call for the WebServices client in webservices.pbd configuration.