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 Sun, 25 Jun 2006 20:51:25 GMT
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