Description:
Why can't APM CE (CEM) monitor application/soap+xml requests. How can SOAP transactions be monitored?
Solution:
APM CE doesn't know anything about SOAP per se, SOAP is based on XML. TIM tries to determine whether a request body is XML based on the first few bytes of data as well as by looking at the Content-Type: header field.
A Soap-request header looks likes this:
RequestHeader>
POST /My.Test/PolicyManagement.svc HTTP/1.1
Content-Type: application/soap+xml; charset=utf-8
Host: 10.10.10.10
Content-Length: 1150
Expect: 100-continue
If the SOAP application/soap+xml requests are not seen by APM CE, it is because the xml format is not valid.
If the request body is well-formed XML, it should work. Nothing needs to be changed on TIM, TIM Collectors, or MOM's for recognizing valid SOAP transactions.
If the content-type in the first request is not text/xml (i.e. it is application/soap+xml) and the body does not begin with the special "<?xml ..." line that XML documents should start with, TIM will not expect to find XML.
Note that in later releases, APM can recognize the content type:
In 4.5.6/9.0.6 and later, an undocumented feature was added to support content types. All one has to do is add a new content type to the tess-customer.property listed below followed by a space. For example, here we are adding application/x-java-serialized-object to trusted content types. Don't forget to restart the TIM Collector and MOM after making this change.
recorder.mainComponentTrustedContentTypes=x-application/amf text/plain text/html text/xml application/x-java-serialized-object
9.1 and later officially supports two new tess-customer.properties (Requires restart of TIM Collector/MOM.)
The tess-default.properties file uses the recorder.mainComponentTrustedContentTypes - selected content types to use for ALL recordings
recorder.mainComponentAvailableTypes
These are potential content types that can be used for ALL recordings.