On Thursday 09 December 2004 21:16, Sathya Sankar wrote:
> I'm trying to understand how the response messages are formatted for
> a Document Literal service. I have attached the WSDL I'm working
> with.
>
> The request that gets sent (using the Axis test client) looks good to
> me. The "Data" gets wrapped into "RequestData" and goes out.
>
>
> <soapenv:Envelope
> xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
> xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soapenv:Body>
> <RequestData xmlns="http://www.your-company.com/Test-PC.xsd1">
> <Data/>
> </RequestData>
> </soapenv:Body></soapenv:Envelope>
>
>
> But the response that Axis sends back is
>
> <soapenv:Envelope
> xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
> xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <soapenv:Body>
> <RequestDataResponse
> xmlns="http://www.your-company.com/Test-PC.xsd1">
> <Response>250</Response>
> </RequestDataResponse>
> </soapenv:Body></soapenv:Envelope>
>
> Basically, the "Response" gets wrapped into an element
> "RequestDataResponse" and gets sent out.
Yes, that's exactly as it's supposed to be with a wrapped service. The
request body is wrapped in <MethodName>...</MethodName>, the response
body is wrapped in <MethodNameResponse>...</MethodNameResponse>. That's
what makes it wrapped. Also, as far as I remember, if you don't
explicitly say what kind of service you have, Axis uses this naming
convention to sense if your document-style service is actually
wrapped-style.
As a matter of style I don't like wrapped-style WSDL definitions. I'm
just a newbie, though, so my opinion doesn't have that much weight. If
explicitly-specified wrapped-style isn't mandated by interoperability,
I would avoid it. In my current (toy) case, I have a plain
document/literal WSDL definition, but I tell Axis on both ends to
actually wrap messages so that I get wrapped-style on the wire.
On the server-side, my service is defined like this
<service name="MyService" provider="java:RPC" style="wrapped"
use="literal">
...
</service
And on the client-side, in my hand-written code, I explicitly call
call.setOperationStyle(Style.WRAPPED);
wsdl2java puts equivalent code in its generated ...BindingStubImpl
classes, unless support for wrapped is explicitly turned of with
--noWrapped.
Michael
--
Michael Schuerig They tell you that the darkness
mailto:[EMAIL PROTECTED] Is a blessing in disguise
http://www.schuerig.de/michael/ --Janis Ian, From Me To You