axis-java-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Richard Sitze" <>
Subject Re: WsdlAttributes patch
Date Thu, 04 Oct 2001 20:20:18 GMT
First - I'm not familiar (yet) with what AXIS is doing today, so the
following are my opinions on messaging in general.

Will the RPC support one-way and notification messages as you describe?  We
may not have an answer to this for a few weeks.

If "treat one-way and notification operations as request-response
operations" means that we loose the semantic differences between a one-way
and a request, and between a notification and a response, then I would (if
I could) vote -1.  No input means just that - a notification message is
received unsolicited from the server.  The semantic difference could be
useful to the client in knowing how to distinguish between an incoming
notification and a response that, perhaps, the client is waiting for....


Richard A. Sitze  
CORBA Interoperability
WebSphere Development
IBM Software Group

                    Butek"               To:                 
                    <       cc:                                          
                    com>                 Subject:     Re: WsdlAttributes patch        
                    10/04/01 08:47                                                       
                    Please respond                                                       
                    to axis-dev                                                          

I could make these fixes, and I think I agree with them, but I'd like to
discuss a WSDL philosophical question, first.

The operations in the generated bindings are RPC calls, or in WSDL spec
terms, "request-response operations".  An operation without an output is a
one-way operation.  An operation without an input is a notification
operation.  To be a request-response operation, an operation must have both
an input and an output, even if their respective messages are empty.

So my question is, should we be generating bindings for one-way and
notification operations?  To do them properly, I believe the runtime would
have to change.  No output doesn't just mean a void return, it means NO
return; make the call and return without waiting for the call itself to
return.  No input doesn't just mean an empty parameter list, but I'm not
really sure what it means.

The easy thing to do and, barring any 'bugs' like you found, we probably
already do this by accident, is to treat one-way and notification
operations as request-response operations.  But is it the right thing to
do?  Personally, I lean toward "yes" since most folks won't understand this
little nuance and would be rather irate if Wsdl2java refused their WSDL.
If we DO refuse it, we should give them a meaningful reason why.

Russell Butek

Ravi Kumar <> on 10/03/2001 07:59:39 PM

Please respond to

To:   axis-dev <>
Subject:  WsdlAttributes patch

WsdlAttributes scanBindings expects an output element as a part of a

That is incorrect as per the spec. Here is the relevant line from thw
WSDL schema
<element name="input" type="wsdl:startWithExtensionsType"
<element name="output" type="wsdl:startWithExtensionsType"
<element name="fault" minOccurs="0" maxOccurs="unbounded">

A similar change for input as well is required

attached is patch for output

JBuilder R&D

RCS file:

retrieving revision 1.3
diff -r1.3
<                 Iterator outIter = bindOp.getBindingOutput
<                 for (; outIter.hasNext();) {
<                     Object obj =;
<                     if (obj instanceof SOAPBody) {
<                         String use = ((SOAPBody) obj).getUse();
<                         if (use.equalsIgnoreCase("literal")) {
<                             outputBodyType = USE_LITERAL;
>                 if (bindOp.getBindingOutput() != null) {
>                   if (bindOp.getBindingOutput().getExtensibilityElements
() != null) {
>                     Iterator outIter = bindOp.getBindingOutput
>                     for (; outIter.hasNext();) {
>                         Object obj =;
>                         if (obj instanceof SOAPBody) {
>                             String use = ((SOAPBody) obj).getUse();
>                             if (use.equalsIgnoreCase("literal")) {
>                                 outputBodyType = USE_LITERAL;
>                             }
>                             break;
<                         break;
>                   }

View raw message