You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@cxf.apache.org by ha...@raceeend-2.demon.nl on 2008/09/23 20:25:59 UTC
Ambigues Webmethods?
Hi,
I have 3 operations A, B, C, with an empty parameterlist.
Whichever Webmethod I call, at the serverside always the same webmethod is called.
How can I solve this?
Here are parts of my WSDL from which I generate my classes:
<element name="ArrayOfCustomers">
<complexType>
<sequence>
<element name="Customer" minOccurs="0" maxOccurs="unbounded" type="tns:Customer"/>
</sequence>
</complexType>
</element>
<complexType name="Customer">
<sequence>
<element name="name" type="string"/>
<element name="street" type="string"/>
<element name="city" type="string"/>
</sequence>
</complexType>
<element name="ShopException" type="xsd:string"/>
/schema>
</types>
<message name="CustomerRequest"/>
<message name="CustomerResponse">
<part name="result" element="tns:ArrayOfCustomers"/>
</message>
<message name="HandlerRequest"/>
<message name="HandlerResponse">
<part name="result" element="tns:ArrayOfHandlers"/>
</message>
<message name="ShopException">
<part name="ShopException" element="tns:ShopException"/>
</message>
<portType name="RequestPortType">
<operation name="getCustomers">
<input message="tns:CustomerRequest"/>
<output message="tns:CustomerResponse"/>
<fault name="ShopException" message="tns:ShopException"/>
</operation>
<operation name="getHandlers">
<input message="tns:HandlerRequest"/>
<output message="tns:HandlerResponse"/>
<fault name="ShopException" message="tns:ShopException"/>
</operation>
the WSDL is literal/document one.
Re: Ambigues Webmethods?
Posted by ha...@raceeend-2.demon.nl.
Hi Daniel,
I adjusted my WSDL according to your suggestion,
now the webservices do function as expected
Thanks you very much for the information.
Harry
>
> Yea, this won't work. There is nothing on the wire to indicate which method
> to call. Basically, the soap:body is empty so we pretty much just grab one
> of the methods that will work for that.
>
> Technically, this wsdl is not WSI-BP compliant at all and the tools should
> probably flag it. The request messages need to have a part that points to a
> unique element. Example:
> <element name="CustomerRequest">
> <complexType>
> <sequence/>
> </complexType>
> </element>
>
> <message name="CustomerRequest">
> <part name="parameters" element="tns:CustomerRequest"/>
> </message>
>
>
> Dan
>
>
>
> On Tuesday 23 September 2008 2:25:59 pm harry@raceeend-2.demon.nl wrote:
>> Hi,
>>
>> I have 3 operations A, B, C, with an empty parameterlist.
>> Whichever Webmethod I call, at the serverside always the same webmethod is
>> called. How can I solve this?
>>
>> Here are parts of my WSDL from which I generate my classes:
>>
>>
>> <element name="ArrayOfCustomers">
>> <complexType>
>> <sequence>
>> <element name="Customer" minOccurs="0" maxOccurs="unbounded"
>> type="tns:Customer"/> </sequence>
>> </complexType>
>> </element>
>>
>> <complexType name="Customer">
>> <sequence>
>> <element name="name" type="string"/>
>> <element name="street" type="string"/>
>> <element name="city" type="string"/>
>> </sequence>
>> </complexType>
>>
>> <element name="ShopException" type="xsd:string"/>
>>
>> /schema>
>> </types>
>>
>> <message name="CustomerRequest"/>
>> <message name="CustomerResponse">
>> <part name="result" element="tns:ArrayOfCustomers"/>
>> </message>
>>
>> <message name="HandlerRequest"/>
>> <message name="HandlerResponse">
>> <part name="result" element="tns:ArrayOfHandlers"/>
>> </message>
>>
>> <message name="ShopException">
>> <part name="ShopException" element="tns:ShopException"/>
>> </message>
>>
>>
>> <portType name="RequestPortType">
>> <operation name="getCustomers">
>> <input message="tns:CustomerRequest"/>
>> <output message="tns:CustomerResponse"/>
>> <fault name="ShopException" message="tns:ShopException"/>
>> </operation>
>> <operation name="getHandlers">
>> <input message="tns:HandlerRequest"/>
>> <output message="tns:HandlerResponse"/>
>> <fault name="ShopException" message="tns:ShopException"/>
>> </operation>
>>
>> the WSDL is literal/document one.
>
>
>
> --
> Daniel Kulp
> dkulp@apache.org
> http://www.dankulp.com/blog
>
Re: Ambigues Webmethods?
Posted by Daniel Kulp <dk...@apache.org>.
Yea, this won't work. There is nothing on the wire to indicate which method
to call. Basically, the soap:body is empty so we pretty much just grab one
of the methods that will work for that.
Technically, this wsdl is not WSI-BP compliant at all and the tools should
probably flag it. The request messages need to have a part that points to a
unique element. Example:
<element name="CustomerRequest">
<complexType>
<sequence/>
</complexType>
</element>
<message name="CustomerRequest">
<part name="parameters" element="tns:CustomerRequest"/>
</message>
Dan
On Tuesday 23 September 2008 2:25:59 pm harry@raceeend-2.demon.nl wrote:
> Hi,
>
> I have 3 operations A, B, C, with an empty parameterlist.
> Whichever Webmethod I call, at the serverside always the same webmethod is
> called. How can I solve this?
>
> Here are parts of my WSDL from which I generate my classes:
>
>
> <element name="ArrayOfCustomers">
> <complexType>
> <sequence>
> <element name="Customer" minOccurs="0" maxOccurs="unbounded"
> type="tns:Customer"/> </sequence>
> </complexType>
> </element>
>
> <complexType name="Customer">
> <sequence>
> <element name="name" type="string"/>
> <element name="street" type="string"/>
> <element name="city" type="string"/>
> </sequence>
> </complexType>
>
> <element name="ShopException" type="xsd:string"/>
>
> /schema>
> </types>
>
> <message name="CustomerRequest"/>
> <message name="CustomerResponse">
> <part name="result" element="tns:ArrayOfCustomers"/>
> </message>
>
> <message name="HandlerRequest"/>
> <message name="HandlerResponse">
> <part name="result" element="tns:ArrayOfHandlers"/>
> </message>
>
> <message name="ShopException">
> <part name="ShopException" element="tns:ShopException"/>
> </message>
>
>
> <portType name="RequestPortType">
> <operation name="getCustomers">
> <input message="tns:CustomerRequest"/>
> <output message="tns:CustomerResponse"/>
> <fault name="ShopException" message="tns:ShopException"/>
> </operation>
> <operation name="getHandlers">
> <input message="tns:HandlerRequest"/>
> <output message="tns:HandlerResponse"/>
> <fault name="ShopException" message="tns:ShopException"/>
> </operation>
>
> the WSDL is literal/document one.
--
Daniel Kulp
dkulp@apache.org
http://www.dankulp.com/blog