views:

172

answers:

1

I wrote a .asmx web service which I'm trying to consume from a java client. I'm using axis2's wsdl2java to generate code. But it says that the wsdl is invalid. What exactly is the problem here? It is .net which generated the wsdl automatically after all. Are there problems with wsdl standards, rather the lack of them? What can I do now?

I'm putting the wsdl here for reference.

<?xml version="1.0" encoding="utf-8"?>
<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:tns="http://localhost:4148/" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" targetNamespace="http://localhost:4148/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"&gt;
  <wsdl:types>
    <s:schema elementFormDefault="qualified" targetNamespace="http://localhost:4148/"&gt;
      <s:element name="GetUser">
        <s:complexType>
          <s:sequence>
            <s:element minOccurs="0" maxOccurs="1" name="uid" type="s:string" />
          </s:sequence>
        </s:complexType>
      </s:element>
      <s:element name="GetUserResponse">
        <s:complexType>
          <s:sequence>
            <s:element minOccurs="0" maxOccurs="1" name="GetUserResult" type="tns:User" />
          </s:sequence>
        </s:complexType>
      </s:element>
      <s:complexType name="User">
        <s:sequence>
          <s:element minOccurs="0" maxOccurs="1" name="HA" type="tns:ComplexT" />
          <s:element minOccurs="0" maxOccurs="1" name="AP" type="s:string" />
          <s:element minOccurs="0" maxOccurs="1" name="AL" type="tns:ArrayOfString" />
          <s:element minOccurs="0" maxOccurs="1" name="CO" type="s:string" />
          <s:element minOccurs="0" maxOccurs="1" name="EP" type="s:string" />
          <s:element minOccurs="0" maxOccurs="1" name="ND" type="s:string" />
          <s:element minOccurs="0" maxOccurs="1" name="AE" type="s:string" />
          <s:element minOccurs="0" maxOccurs="1" name="IE" type="s:string" />
          <s:element minOccurs="0" maxOccurs="1" name="IN" type="s:string" />
          <s:element minOccurs="0" maxOccurs="1" name="HM" type="s:string" />
          <s:element minOccurs="0" maxOccurs="1" name="AN" type="s:string" />
          <s:element minOccurs="0" maxOccurs="1" name="MI" type="tns:ArrayOfString" />
          <s:element minOccurs="0" maxOccurs="1" name="NO" type="s:string" />
          <s:element minOccurs="0" maxOccurs="1" name="TL" type="s:string" />
          <s:element minOccurs="0" maxOccurs="1" name="UI" type="s:string" />
          <s:element minOccurs="0" maxOccurs="1" name="DT" type="s:string" />
          <s:element minOccurs="0" maxOccurs="1" name="PT" type="s:string" />
          <s:element minOccurs="0" maxOccurs="1" name="PO" type="s:string" />
          <s:element minOccurs="0" maxOccurs="1" name="AE" type="s:string" />
          <s:element minOccurs="0" maxOccurs="1" name="ME" type="tns:ArrayOfString" />
        </s:sequence>
      </s:complexType>
      <s:complexType name="ComplexT">
        <s:sequence>
          <s:element minOccurs="0" maxOccurs="1" name="SR" type="s:string" />
          <s:element minOccurs="0" maxOccurs="1" name="CI" type="s:string" />
          <s:element minOccurs="0" maxOccurs="1" name="TA" type="s:string" />
          <s:element minOccurs="0" maxOccurs="1" name="SC" type="s:string" />
          <s:element minOccurs="0" maxOccurs="1" name="RU" type="s:string" />
          <s:element minOccurs="0" maxOccurs="1" name="HN" type="s:string" />
        </s:sequence>
      </s:complexType>
      <s:complexType name="ArrayOfString">
        <s:sequence>
          <s:element minOccurs="0" maxOccurs="unbounded" name="string" nillable="true" type="s:string" />
        </s:sequence>
      </s:complexType>
    </s:schema>
  </wsdl:types>
  <wsdl:message name="GetUserSoapIn">
    <wsdl:part name="parameters" element="tns:GetUser" />
  </wsdl:message>
  <wsdl:message name="GetUserSoapOut">
    <wsdl:part name="parameters" element="tns:GetUserResponse" />
  </wsdl:message>
  <wsdl:portType name="UserServiceSoap">
    <wsdl:operation name="GetUser">
      <wsdl:input message="tns:GetUserSoapIn" />
      <wsdl:output message="tns:GetUserSoapOut" />
    </wsdl:operation>
  </wsdl:portType>
  <wsdl:binding name="UserServiceSoap" type="tns:UserServiceSoap">
    <soap:binding transport="http://schemas.xmlsoap.org/soap/http" />
    <wsdl:operation name="GetUser">
      <soap:operation soapAction="http://localhost:4148/GetUser" style="document" />
      <wsdl:input>
        <soap:body use="literal" />
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal" />
      </wsdl:output>
    </wsdl:operation>
  </wsdl:binding>
  <wsdl:binding name="UserServiceSoap12" type="tns:UserServiceSoap">
    <soap12:binding transport="http://schemas.xmlsoap.org/soap/http" />
    <wsdl:operation name="GetUser">
      <soap12:operation soapAction="http://localhost:4148/GetUser" style="document" />
      <wsdl:input>
        <soap12:body use="literal" />
      </wsdl:input>
      <wsdl:output>
        <soap12:body use="literal" />
      </wsdl:output>
    </wsdl:operation>
  </wsdl:binding>
  <wsdl:service name="UserService">
    <wsdl:port name="UserServiceSoap" binding="tns:UserServiceSoap">
      <soap:address location="http://localhost:4148/Service/UserService.asmx" />
    </wsdl:port>
    <wsdl:port name="UserServiceSoap12" binding="tns:UserServiceSoap12">
      <soap12:address location="http://localhost:4148/Service/UserService.asmx" />
    </wsdl:port>
  </wsdl:service>
</wsdl:definitions>
A: 

I was able to process your WSDL without error:

$ $AXIS2_HOME/bin/wsdl2java.sh -d adb -s -o build -uri test.wsdl
 Using AXIS2_HOME:   /opt/axis2-1.5.1
 Using JAVA_HOME:       /usr/lib/jvm/java-6-sun
Retrieving document at 'test.wsdl'.

$ find build -type f
build/src/localhost/UserServiceStub.java
build/build.xml

What version of Axis2 are you using?

Mark O'Connor