Michael Marks wrote:
But I've got it working with axis. The axis-wsdl2java processes the wsdl-definition without problems and I got a Method-Signature with zero-paremeters. I defined:
<types> ... <xs:element name="zero_Boolean" type="xs:boolean"/> ... </types>
<message name="ZeroParamsRequest"/>
<message name="ZeroParamsResponse">
<part name="proccessed" element="tns:zero_Boolean"/>
</message>
<portType name=".." ...>
...
<operation name="ZeroParams">
<input message="tns:ZeroParamsRequest"/>
<output message="tns:ZeroParamsResponse"/>
</operation>
...
</portType>
<binding ...>
<operation name="ZeroParams"> <soap:operation style="document"/> <input> <soap:body use="literal"/> </input> <output> <soap:body use="literal"/> </output> </operation>
</binding>
I got:
In the interface:
================
public boolean zeroParams() throws java.rmi.RemoteException;
In the implementation-body: ========================== public boolean zeroParams() throws java.rmi.RemoteException { return false; }
The messages are:
Request: ======== POST /axis/services/ShoppingCart HTTP/1.0 Content-Type: text/xml; charset=utf-8 Accept: application/soap+xml, application/dime, multipart/related, text/* User-Agent: Axis/1.2RC2 Host: 127.0.0.1:8079 Cache-Control: no-cache Pragma: no-cache SOAPAction: "" Content-Length: 245
<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> <ZeroParams xmlns=""/> </soapenv:Body> </soapenv:Envelope>
Response: ========= HTTP/1.1 200 OK Content-Type: text/xml;charset=utf-8 Date: Wed, 16 Feb 2005 23:02:17 GMT Server: Apache-Coyote/1.1 Connection: close
<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> <zero_Boolean xmlns="http://bookstore.com/shoppingCart"> false </zero_Boolean> </soapenv:Body> </soapenv:Envelope>
I don't know, how the message is dispatched, neverless it seems to work. But I don't have tried to define two empty messages per service until yet. For me it looks like that axis allows empty message bodies and can handle them. Any ideas about that? Does it matter to WSRF?
Hi Michael,
It looks like Axis is generating for your WSDL as if the operation style is "rpc", even though it is "document". That is, for rpc, the name attribute of the operation (e.g. "ZeroParams") becomes the top-level soap body element . For document style, the input part element (if there is one :) should become the soap body element.
So, according to the WSDL, the request body should look like:
<soapenv:Body> </soapenv:Body>
not:
<soapenv:Body> <ZeroParams xmlns="" /> </soapenv:Body>
So Axis generated a la RPC style and is dispatching in that style too. Is the Axis service configured to use Axis' RPCHandler?
For Apollo, I think it makes the most sense for us to require doc-lit with exactly one input part. For parameterless operations, you can use empty complexTypes, as Sam suggested.
Ian
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
