I have made a very simple web service on an Axis2 Tomcat driven server.
Axis generates the wsdl fine heres a snippet.


<wsdl:definitions targetNamespace="http://ws.apache.org/axis2";>
<wsdl:documentation>SimpleService</wsdl:documentation>
−
      <wsdl:types>
−
      <xs:schema attributeFormDefault="qualified"
elementFormDefault="qualified"
targetNamespace="http://ws.apache.org/axis2/xsd";>
−
      <xs:element name="echo">
−
      <xs:complexType>
−
      <xs:sequence>
<xs:element name="param0" nillable="true" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
−
      <xs:element name="echoResponse">
−
      <xs:complexType>
−
      <xs:sequence>
<xs:element name="return" nillable="true" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
</wsdl:types>
−
      <wsdl:message name="echoMessage">
<wsdl:part name="part1" element="ns0:echo"/>
</wsdl:message>
−
      <wsdl:message name="echoResponse">
<wsdl:part name="part1" element="ns0:echoResponse"/>
</wsdl:message>
−
      <wsdl:portType name="SimpleServicePortType">
−
      <wsdl:operation name="echo">
<wsdl:input message="axis2:echoMessage" wsaw:Action="urn:echo"/>
<wsdl:output message="axis2:echoResponse"/>
</wsdl:operation>
</wsdl:portType>
−
      <wsdl:binding name="SimpleServiceSOAP11Binding"
type="axis2:SimpleServicePortType">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http";
style="document"/>
−
      <wsdl:operation name="echo">
......snippet ends

I have also made a client that can communicate with the echo service
but ONLY if I use the targetnamespace of the schema and not the one for
wsdl definitions, and I have absolutely no idea why.

The request for the client request looks like this:
<v:Envelope xmlns:i="http://www.w3.org/2001/XMLSchema-instance";
xmlns:d="http://www.w3.org/2001/XMLSchema";
xmlns:c="http://schemas.xmlsoap.org/soap/encoding/";
xmlns:v="http://schemas.xmlsoap.org/soap/envelope/";><v:Header
/><v:Body><n0:echo id="o0" c:root="1"
xmlns:n0="http://ws.apache.org/axis2/xsd";><param0
i:type="d:string">Test af Soap
Webservice</param0></n0:echo></v:Body></v:Envelope>

The response looks like this:
<?xml version='1.0' encoding='UTF-8'?><soapenv:Envelope xmlns:soapenv="
http://schemas.xmlsoap.org/soap/envelope/";><soapenv:Header
/><soapenv:Body><ns:echoResponse
xmlns:ns="http://ws.apache.org/axis2/xsd";><ns:return>echo
value is: Test af Soap
Webservice</ns:return></ns:echoResponse></soapenv:Body></soapenv:Envelope>

And all is fine, but if I change the namespace to: "xmlns:ns="
http://ws.apache.org/axis2"; instead, then I get a faultcode with unknown
method echo.

According to all sorts of books and ressources on the net, the WSDL
definitions namespace address ALL the elements in the document, so why
is it that if I change the namespace to the defintions namespace then
my client gets a faultcode saying that the echo method is not known? I
am missing out on something here I know so please point me in the right
direction.

Reply via email to