axis-java-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Anne Thomas Manes" <atma...@gmail.com>
Subject Re: No such operation
Date Mon, 26 Jun 2006 11:42:42 GMT
Doug,

"Wrapped" is a WSDL design convention that helps tools simulate an RPC-like
programming interface. The WS-I BP doesn't address language binding issues,
therefore "wrapped" versus "unwrapped" is out of scope for the WS-I BP.

.NET generates "wrapped" interfaces by default. The JAX-RPC spec defines the
"wrapped" convention for Java. I've also provided a summary of the
convention here:

http://atmanes.blogspot.com/2005/03/wrapped-documentliteral-convention.html

Anne

On 6/25/06, Doug B <ummmmm22@gmail.com> wrote:
>
> Thanks, Anne.  That makes sense and looks like a simple solution.
>
> Best I can tell, the WS-I Basic Profile does not recommend or even mention
> wrapped Document-Literal, does it?  Plus, from reading some older Axis
> discussion threads, it sounds as if wrapped style may not even be concretely
> defined, much less standardized.  Or is that no longer the case?  I guess
> I'm surprised that Axis defaults to what appears the non-standard scenario
> rather than the standard one.
>
>
> On 6/25/06, Anne Thomas Manes <atmanes@gmail.com> wrote:
> >
> > Axis figures out how to map an incoming request based on the QName of
> > the child element of the SOAP Body. If you use RPC style or wrapped document
> > style, then the name of that element will be the same as the operation name,
> > and Axis can automatically figure out how to map the request. But if you use
> > non-wrapped document style (as you are in this case) then you must
> > explicitly tell Axis how to map the request using the <operation> tag in the
> > WSDD. To map your input message <doi:SuccessfulRenewalRequest> to the
> > service method SuccessfulRenewalOperation, you must specify the following:
> >
> >         <operation name="SuccessfulRenewalOperation"
> >                    qname="doi:SuccessfulRenewalRequest"
> >         />
> >
> >
> > Anne
> >
> >
> > On 6/25/06, Doug B <ummmmm22@gmail.com> wrote:
> > >
> > > We're doing a "contract-first" implementation with a customer, using
> > > Document-Literal from handwritten WSDL and Schema.  We are the client and
> > > our customer the server.  The Schema has elements (and types) defined for
> > > each request and response message, and the WSDL uses single elements for
> > > each message part, named "request" and "response", with single input and
> > > output elements for the operations.
> > >
> > > We've used this same approach with a .NET customer and had no issues.
> > > However, this particular customer is using Axis (1.2 beta 3 because of
> > > his particular version of JBoss) and it reports that it's trying to call an
> > > operation whose name is actually the name of our request element.  Doing a
> > > little digging, it almost looks like Axis has decided to use something like
> > > wrapped style, which we're not using.
> > >
> > > Any ideas on the cause of this?  How we can resolve it?
> > >
> > > (I realize the customer's Axis is not current, and I'm going to pursue
> > > with him whether he can update to at least the last release level of
> > > 1.2, but I'm not sure that will make any difference.)
> > >
> > > Relevant excerpts from the definitions:
> > > ...
> > >
> > > <xsd:element name="SuccessfulRenewalRequest" type="doi:SuccessfulRenewalRequestType"/>
> > > <xsd:element name="SuccessfulRenewalResponse" type="doi:SuccessfulRenewalResponseType"/>
> > >
> > >
> > >
> > > ...
> > >
> > > <wsdl:message name="SuccessfulRenewalRequestMessage">
> > >   <wsdl:part name="request" element="doi:SuccessfulRenewalRequest"/>
> > > </wsdl:message>
> > >
> > >
> > > <wsdl:message name="SuccessfulRenewalResponseMessage">
> > >
> > >   <wsdl:part name="response" element="doi:SuccessfulRenewalResponse"/>
> > > </wsdl:message>
> > >
> > > <wsdl:operation name="SuccessfulRenewalOperation">
> > >
> > >
> > >   <wsdl:input message="tns:SuccessfulRenewalRequestMessage"/>
> > >
> > >   <wsdl:output message="tns:SuccessfulRenewalResponseMessage"/>
> > > </wsdl:operation>
> > > ...
> > >
> > > And from the messages (captured with TCPMon):
> > >
> > > SOAPAction: "**ns removed**/SuccessfulRenewalOperation"
> > > Content-Length: 732
> > >
> > > <?xml version="1.0" encoding="UTF-8"?>
> > >    <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>
> > >          <SuccessfulRenewalRequest
> > > xsi:type="ns1:SuccessfulRenewalRequestType" xmlns="**removed**"
> > > xmlns:ns1="**removed**">
> > >            ...
> > >             ** 6 sequence fields removed **
> > >            ...
> > >          </SuccessfulRenewalRequest>
> > >       </soapenv:Body>
> > >    </soapenv:Envelope>
> > >
> > > ...
> > >
> > > <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>
> > >       <soapenv:Fault>
> > >          <faultcode xmlns:ns1=" http://xml.apache.org/axis/
> > > ">ns1:Client</faultcode>
> > >          <faultstring>No such operation
> > > 'SuccessfulRenewalRequest'</faultstring>
> > >          <detail>
> > >             <ns2:hostname xmlns:ns2=" http://xml.apache.org/axis/">**servername
> > > removed**</ns2:hostname>
> > >          </detail>
> > >       </soapenv:Fault>
> > >    </soapenv:Body></soapenv:Envelope>
> > >
> > > i.e. Axis appears to be using the main element in the Body, not the
> > > SOAPAction, as the Operation name.
> > >
> > > Doug
> > >
> >
> >
>

Mime
View raw message