---- snip ----

This works just fine. Thanks again but, my (SOAP) clients are sending me (the SOAP 
server) an xml file wrapped in an SOAP envelope as follows. How do I know what service 
they are requesting? And, what params they have sent?

<?xml version="1.0"?>
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/";>
 <env:Header/>
 <env:Body>
   <SubmitRequest xmlns="http://abc.def.ghi/jkl/mno"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xsi:schemaLocation="http://abc.def.ghi/jkl/xyz.xsd";>
     <DefaultStatus location="SOME LOCATION">
       <ResourceStatus>OutAndOver</ResourceStatus>
     </DefaultStatus>
   </SubmitRequest>
 </env:Body>
</env:Envelope>


---- snip ----

Usually, the server is written and the clients must conform to it.  It is quite 
strange to sort of reverse-engineer a server based on a client payload.

You may find the SOAP 1.1 spec (http://www.w3.org/TR/SOAP/), and even WSDL 1.1 
(http://www.w3.org/TR/wsdl.html) helpful with your issues.

There are three parts of a SOAP message typically used to specify the service and 
method.  Those are the SOAPAction header, the namespace of the first child element of 
the SOAP Body element, and the name (local part) of that element.  Apache SOAP does 
not use the SOAPAction header.  The element namespace picks the Java class, and the 
element name picks the method to call.  Using the element name follows the SOAP 1.1 
spec.  So, the payload above would specify the class associated with the 
targetObjectURI of http://abc.def.ghi/jkl/mno, and the method SubmitRequest.

What I have just said is the naive analysis.  The payload above uses literal encoding, 
rather than SOAP encoding.  Apache SOAP has poor support for literal encoding, and 
that is limited to the client.

For endpoints to understand payloads such as that shown above, they would typically 
require WSDL.  The WSDL would specify whether SOAPAction is part of routing the 
request, which request uses the SubmitRequest element as its message body, etc.

If you want to write a Java server to support literal encoding such as the payload 
above, I suggest you try Apache Axis (http://ws.apache.org/axis/) or a commercial 
product.

Scott Nichol

Do not send e-mail directly to this e-mail address,
because it is filtered to accept only mail from
specific mail lists.

Reply via email to