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]



Reply via email to