You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by James M Snell <ja...@us.ibm.com> on 2003/01/22 01:20:03 UTC
Axis WSDL Support Issue: WSDL SOAP Binding vs. SOAP RPC
Ok, another issue to chew over...
Currently, when initializing an org.apache.axis.client.Service object
using a WSDL document, the method return part in the WSDL message
definition MUST be named exactly the same as the element in the returned
SOAP Envelope that contains the return value or else Axis will throw an
error while parsing the return (because Axis serialization uses the WSDL
part definition to figure out which QName to look for).... the error is
thrown because Axis cannot find the element containing the return value.
While this is sufficient to satisify the WSDL specification constraint
expressed in Section 3.5: "Each message part (parameter) appears under the
wrapper, represented by an accessor named identically to the corresponding
parameter of the call. Parts are arranged in the same order as the
parameters of the call", it does cause somewhat of a conflict with the
SOAP specification RPC binding which states in Section 7.1 "The name of
the return value accessor is not significant".
The behavior of the deserialization process should be changed to the
following:
1. First, attempt to find the return element using the WSDL message part
definition.
2. If the return element cannot be found (e.g. when the name of the return
element in the SOAP message does not equal the name of the return part in
the WSDL message definition), then use the first child element as the
return element.
Doing so will satisify both the WSDL and SOAP spec constraints.
- James Snell
IBM Emerging Technologies
jasnell@us.ibm.com
(559) 587-1233 (office)
(700) 544-9035 (t/l)
Programming Web Services With SOAP
O'Reilly & Associates, ISBN 0596000952
Have I not commanded you? Be strong and courageous.
Do not be terrified, do not be discouraged, for the Lord your
God will be with you whereever you go. - Joshua 1:9