webMethods Integration Server uses something called the default soap processor to handle document/literal soap requests. By default the URL for this processor is http:\<host>:<port>\soap\default.
It determines which IS service to invoke using the qualified name (QName) and the namespace definition in the soap request. (The element that is the first child of the SOAP-ENV:Body element is known as the QName.)
This means that the QName must be namespace qualified, that is, must specify a namespace prefix and a namespace definition. The default soap processor looks up the service to invoke in a registry using a key formed by concatenating the namespace prefix with the QName. You can list the contents of this directory using the pub.universalName:list built-in service.
The localname will be the name of the wrapper service to be invoked. The prefix can be any valid namespace prefix such as “xs”, “dx”, “myPrefix” etc.
The namespace definition (defined by xmlns:<prefix>="<namespace>") must match exactly the namespaceName specified in the Universal Name section of the service’s properties.
For example, if you defined a wrapper service called demo.flows:fooWrapper and specified it’s universal name properties to have a localName of “foo” and a namespaceName of "http://demo", then your soap request would need to have the following structure:
Note that the following would also work
Your wrapper service (“fooWrapper” in my example) extracts the soap body from the soap request using pub.soap.utils:getBody and then uses pub.xml.queryXMLNode to create a document from the resulting “body” node.
You can enter any value for the prefix on the “nsdecls” parameter, but you must specify a namespace value that matches exactly the namespace definition contained in your soap request and contained in your services UniversalName’s namespaceName property.
Clear as mud?