None of the Web services specifications (SOAP,
WSDL, WS-I) discuss this area. It falls to the SOAP engine to map a WSDL
<operation> to a specific method. I would expect, though, that you could
map different operations to the same method. I’m not an expert on the WSDD, but
looking at the WSDD reference (http://www.osmoticweb.com/axis-wsdd/),
I don’t see a way to specify a method name, so I’m assuming that
the WSDD operation @name attribute maps to the method name. If that’s the
case, then I’d say that Axis does not support mapping of multiple
operations to the same method. The WS-I Basic Profile disallows
overloaded WSDL operations. I suggest that it’s a best practice to also
not use overloaded Java methods. But I agree with you that this is a
shortcoming of the product. I recommend adding another attribute in the WSDD
operation element that allows you to specify a method name. (The value of the
method attribute should default to the value of the name attribute.) I suggest
you submit an enhancement request. Anne From: Leena Janardanan
[mailto:[EMAIL PROTECTED]] All,
I have a question regarding the <operation> tag in the wsdd, and
well, probably an Axis limitation.
Is it possible to have two WSDL operations, say, getBooks()
and getAuthors() map to the same Java method, say execute() ? In other words,
when i receive SOAP requests for getBooks or getAuthors, i want the same
execute() method on my impl class called. Is this possible in Axis (1.2)
? I have done this in weblogic.
As far as i know, this implies that there will be two operation tags in
the wsdd that look like this:
<operation name="execute" qname="ns1:getBooks"
returnQName="xsd:string" returnType="xsd:string"
xmlns:ns1="namespace here" xmlns:xsd="http://www.w3.org/2001/XMLSchema"/>
<operation name="execute" qname="ns1:getAuthors"
returnQName="xsd:string" returnType="xsd:string"
xmlns:ns1="namespace here" xmlns:xsd="http://www.w3.org/2001/XMLSchema"/>
and this isnt valid. Is there ANY way to do what i want to do ?
I have been able to get ONE such operation to work, but when i put both
in the WSDD, i get this error from Axis : faultString:
org.apache.axis.InternalException: java.lang.Exception: The OperationDesc for
invoke1 was not synchronized to a method of service.ServiceImpl
|
Title: Wsdd Operation question
- Wsdd Operation question Leena Janardanan
- RE: Wsdd Operation question Anne Thomas Manes
- Anne Thomas Manes