Darn. Sorry for formatting. Let's try again: <wsdl:portType name="DOIServicesPortType"> <wsdl:operation name="SuccessfulRenewalOperation"> <wsdl:input message="tns:SuccessfulRenewalRequestMessage"/> <wsdl:output message="tns:SuccessfulRenewalResponseMessage"/> </wsdl:operation> </wsdl:portType>
<wsdl:binding name="DOIServicesBinding" type="tns:DOIServicesPortType"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <wsdl:operation name="SuccessfulRenewalOperation"> <soap:operation soapAction="http://az.gov/doi-ws/SuccessfulRenewalOperation"/> <wsdl:input> <soap:body use="literal"/> </wsdl:input> <wsdl:output> <soap:body use="literal"/> </wsdl:output> </wsdl:operation> </wsdl:binding>
Doug, Can you post the portType and binding definitions for this operation? There might be something there that's not quite right. Anne On 6/27/06, Doug B <[EMAIL PROTECTED]> wrote: > Thanks again, Anne. I had read that first BP section, but not really understanding the implications until some of this discussion. It makes more sense now. I did try with Axis 1.3, and it does the same thing, so it must be something I'm just not quite grasping. But I'm content for now that I understand what it's doing and somewhat why, so thanks for your time and effort. It's been a couple years since I spent much time in the Axis newsgroup, but I remember noting back then that your answers were thorough and knowledgable (even bought a copy of your book), so I appreciate having your input on this. Doug On 6/27/06, Anne Thomas Manes < [EMAIL PROTECTED]> wrote: > Sorry -- there's no reason to run java2wsdl, but it really helps to run wsdl2java. I'm not sure why it's producing the erroneous qname attribute in the <operation> element. This could be a bug in Axis 1.2 (which had pretty sketchy support for document/literal -- Axis 1.3 or 1.4 is much better). Tell your customer to make the following change to the WSDD: Change this: <operation name="successfulRenewalOperation" qname="SuccessfulRenewalOperation" to this: <operation name="successfulRenewalOperation" qname="retNS:SuccessfulRenewalRequest" In any case, to answer your questions... The hosting server determines how to dispatch a request by looking at the QName of the child element of the <soap:Body>. The configuration must provide the hosting service with the necessary information to map the QName to an appropriate method in the service agent. See Section 4.7.6 in the WS-I Basic Profile: 4.7.6 Operation Signatures Definition: operation signature The profile defines the "operation signature" to be the fully qualified name of the child element of SOAP body of the SOAP input message described by an operation in a WSDL binding. In the case of rpc-literal binding, the operation name is used as a wrapper for the part accessors. In the document-literal case, since a wrapper with the operation name is not present, the message signatures must be correctly designed so that they meet this requirement. An endpoint that supports multiple operations must unambiguously identify the operation being invoked based on the input message that it receives. This is only possible if all the operations specified in the wsdl:binding associated with an endpoint have a unique operation signature. R2710 The operations in a wsdl:binding in a DESCRIPTION MUST result in operation signatures that are different from one another. And section 4.7.25 (second paragraph): 4.7.25 Describing SOAPAction Interoperability testing has demonstrated that requiring the SOAPAction HTTP header field-value to be quoted increases interoperability of implementations. Even though HTTP allows for header field-values to be unquoted, some implementations require that the value be quoted. The SOAPAction header is purely a hint to processors. All vital information regarding the intent of a message is carried in the envelope. Regards, Anne On 6/27/06, Doug B < [EMAIL PROTECTED]> wrote: > But I'm trying to go the other direction. I don't want to have to run java2wsdl at all. I want to handwrite the WSDL and use that as the contract for both the client and the server. I want the "wsdl2java --server-side" to generate a deployable service which matches and honors the original WSDL, including recognizing the specified operation names. I went ahead and generated server-side artifacts myself just to compare what I think my customer might be seeing. It seems interesting to me that, in fact, the deploy.wsdd that is generated from the "--server-side" option does contain the <operation> mappings - they're just looking for what I'd consider the "wrong" qname: <operation name="successfulRenewalOperation" qname="SuccessfulRenewalOperation" returnQName="retNS:SuccessfulRenewalResponse" xmlns:retNS=" http://az.gov/doi" returnType="rtns:SuccessfulRenewalResponseType" xmlns:rtns=" http://az.gov/doi" soapAction="http://az.gov/doi-ws/SuccessfulRenewalOperation" > <parameter qname="pns:SuccessfulRenewalRequest" xmlns:pns="http://az.gov/doi" type="tns:SuccessfulRenewalRequestType" xmlns:tns=" http://az.gov/doi"/> </operation> (This is either with or without the --noWrapped option.) It gets the correct returnQName from the WSDL-defined response element, including for another operation where that response name is not at all related to the operation or request names, so why wouldn't it use the WSDL-defined request element for the qname by default? Regarding SOAPAction, so what is supposed to be *the standard* way the service endpoint knows what operation is being requested? Is the "engine" supposed to have to make a best guess at mapping operation "signatures" based on "parameters" (with manual override mapping allowed)? I guess I was expecting something less ambiguous to be part of the specs or at least ws-i. Doug <snip>
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]