axis-java-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Mark Young" <m...@kamiak.com>
Subject Re: Axis and MS SOAP
Date Tue, 08 Jan 2002 18:11:07 GMT
Richard:

I see that the WSDL has two schemas embedded in it, one of which references
definitions in the other.  This is valid, for sure, but I have seen that
some web service frameworks have trouble following it.  Unfortunately I
haven't tried MS SOAP in quite a while, so I can't tell you for sure if it
handles this or not.  The version of .net Beta 2 I've tried does not handle
it.  I believe that the latest version of .net does handle it.

No promises, but you might try collapsing the two schemas into one.  It's a
bit tricky: you have to make sure that you get the targetnamespaces and
qnames right.

Oh, all right, I've done it for you (inline below).

Please note that I found two other problems that made the version I have of
WSDL2Java not want to process it:

1) use of  soap:Array -- you mean soapenc:Array, I think
2) nothing in the  soap:address element (you need a location="something").

I patched these for you.

Try the enclosed with MS SOAP and see if it likes it.


Regards,

-------------------------------------------
Mark Young
Omniopera: XML Schema and WSDL  Authoring Software
http://www.omniopera.com

-----------------
Patched WSDL:
-----------------


<?xml version="1.0" encoding="utf-8"?>
<definitions name="StringBeansDef" xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:impl="http://string-service-impl" xmlns:intf="http://string-service"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
targetNamespace="http://string-service">
 <types>
  <schema xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://string-service">
   <complexType name="ArrayOf_xsd_string">
    <complexContent>
     <restriction base="soapenc:Array">
      <attribute ref="soapenc:arrayType" wsdl:arrayType="xsd:string[]"/>
     </restriction>
    </complexContent>
   </complexType>
   <element name="ArrayOf_xsd_string" type="intf:ArrayOf_xsd_string"
nillable="true"/>
   <complexType name="ArrayOf_tns1_StringBean">
    <complexContent>
     <restriction base="soapenc:Array">
      <attribute ref="soapenc:arrayType"
wsdl:arrayType="intf:StringBean[]"/>
     </restriction>
    </complexContent>
   </complexType>
   <element name="ArrayOf_tns1_StringBean"
type="intf:ArrayOf_tns1_StringBean" nillable="true"/>
   <complexType name="StringBean">
    <all>
     <element name="string1" type="string" nillable="true"/>
     <element name="string2" type="string" nillable="true"/>
    </all>
   </complexType>
   <element name="StringBean" type="intf:StringBean" nillable="true"/>
  </schema>
 </types>
 <message name="stringArrayResponse">
  <part name="stringArrayResult" type="intf:ArrayOf_xsd_string"/>
 </message>
 <message name="stringFaultResponse">
  <part name="stringFaultResult" type="xsd:string"/>
 </message>
 <message name="stringBeanArrayResponse">
  <part name="stringBeanArrayResult" type="intf:ArrayOf_tns1_StringBean"/>
 </message>
 <message name="getStringResponse">
  <part name="getStringResult" type="xsd:string"/>
 </message>
 <message name="stringConcatRequest">
  <part name="in0" type="xsd:string"/>
  <part name="in1" type="xsd:string"/>
 </message>
 <message name="stringBeanArrayRequest">
  <part name="in0" type="intf:ArrayOf_tns1_StringBean"/>
 </message>
 <message name="stringUpperResponse">
  <part name="stringUpperResult" type="xsd:string"/>
 </message>
 <message name="stringArrayRequest">
  <part name="in0" type="intf:ArrayOf_xsd_string"/>
 </message>
 <message name="stringBeanRequest">
  <part name="in0" type="intf:StringBean"/>
 </message>
 <message name="stringFaultRequest"/>
 <message name="stringUpperRequest">
  <part name="in0" type="xsd:string"/>
 </message>
 <message name="stringConcatResponse">
  <part name="stringConcatResult" type="xsd:string"/>
 </message>
 <message name="stringBeanResponse">
  <part name="stringBeanResult" type="intf:StringBean"/>
 </message>
 <message name="getStringRequest"/>
 <portType name="StringService">
  <operation name="stringConcat" parameterOrder="in0 in1">
   <input message="intf:stringConcatRequest"/>
   <output message="intf:stringConcatResponse"/>
  </operation>
  <operation name="getString">
   <input message="intf:getStringRequest"/>
   <output message="intf:getStringResponse"/>
  </operation>
  <operation name="stringUpper" parameterOrder="in0">
   <input message="intf:stringUpperRequest"/>
   <output message="intf:stringUpperResponse"/>
  </operation>
  <operation name="stringBean" parameterOrder="in0">
   <input message="intf:stringBeanRequest"/>
   <output message="intf:stringBeanResponse"/>
  </operation>
  <operation name="stringArray" parameterOrder="in0">
   <input message="intf:stringArrayRequest"/>
   <output message="intf:stringArrayResponse"/>
  </operation>
  <operation name="stringBeanArray" parameterOrder="in0">
   <input message="intf:stringBeanArrayRequest"/>
   <output message="intf:stringBeanArrayResponse"/>
  </operation>
  <operation name="stringFault">
   <input message="intf:stringFaultRequest"/>
   <output message="intf:stringFaultResponse"/>
  </operation>
 </portType>
 <binding name="StringServiceSoapBinding" type="intf:StringService">
  <soap:binding style="rpc"
transport="http://schemas.xmlsoap.org/soap/http"/>
  <operation name="stringConcat">
   <soap:operation style="rpc" soapAction=""/>
   <input>
    <soap:body use="encoded" namespace="http://string-service"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
   </input>
   <output>
    <soap:body use="encoded" namespace="http://string-service"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
   </output>
  </operation>
  <operation name="getString">
   <soap:operation style="rpc" soapAction=""/>
   <input>
    <soap:body use="encoded" namespace="http://string-service"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
   </input>
   <output>
    <soap:body use="encoded" namespace="http://string-service"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
   </output>
  </operation>
  <operation name="stringUpper">
   <soap:operation style="rpc" soapAction=""/>
   <input>
    <soap:body use="encoded" namespace="http://string-service"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
   </input>
   <output>
    <soap:body use="encoded" namespace="http://string-service"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
   </output>
  </operation>
  <operation name="stringBean">
   <soap:operation style="rpc" soapAction=""/>
   <input>
    <soap:body use="encoded" namespace="http://string-service"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
   </input>
   <output>
    <soap:body use="encoded" namespace="http://string-service"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
   </output>
  </operation>
  <operation name="stringArray">
   <soap:operation style="rpc" soapAction=""/>
   <input>
    <soap:body use="encoded" namespace="http://string-service"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
   </input>
   <output>
    <soap:body use="encoded" namespace="http://string-service"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
   </output>
  </operation>
  <operation name="stringBeanArray">
   <soap:operation style="rpc" soapAction=""/>
   <input>
    <soap:body use="encoded" namespace="http://string-service"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
   </input>
   <output>
    <soap:body use="encoded" namespace="http://string-service"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
   </output>
  </operation>
  <operation name="stringFault">
   <soap:operation style="rpc" soapAction=""/>
   <input>
    <soap:body use="encoded" namespace="http://string-service"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
   </input>
   <output>
    <soap:body use="encoded" namespace="http://string-service"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
   </output>
  </operation>
 </binding>
 <service name="StringServiceService">
  <port name="StringService" binding="intf:StringServiceSoapBinding">
   <soap:address location="http://www.bogus.com"/>
  </port>
 </service>
</definitions>


-------------------------------
End of patched WSDL
-------------------------------


----- Original Message -----
From: "Hansen, Richard" <Richard.Hansen@westgroup.com>
To: <axis-user@xml.apache.org>
Sent: Tuesday, January 08, 2002 8:18 AM
Subject: RE: Axis and MS SOAP


> > -----Original Message-----
> > From: Russell Butek [mailto:butek@us.ibm.com]
> > Sent: Tuesday, January 08, 2002 7:29 AM
> > To: axis-user@xml.apache.org
> > Subject: RE: Axis and MS SOAP
> >
> >
> > Could you post an example of WSDL that fails on MS SOAP and the errors
> > you're seeing?
>
> The only error is "WSDLReader:Analyzing the WSDL file failed
> HRESULT=0x80004005". As I mentioned, I don't think the reader is even
> getting through the parsing. If I specify a bad port name I don't get the
> normal "port not found error".
>
> Below is the WSDL. You will notice that it has a complex type, and I have
> not yet filled in the address.   Other than specifying a target namespace,
I
> just let java2wsdl do what it wanted.
>
> Rick
>
> <?xml version="1.0" encoding="UTF-8"?>
> <wsdl:definitions targetNamespace="http://string-service"
> xmlns="http://schemas.xmlsoap.org/wsdl/"
> xmlns:impl="http://string-service-impl" xmlns:intf="http://string-service"
> xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
> xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
> xmlns:tns1="http://common.service"
> xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
> xmlns:xsd="http://www.w3.org/2001/XMLSchema">
>  <types>
>   <schema targetNamespace="http://common.service"
> xmlns="http://www.w3.org/2001/XMLSchema">
>    <complexType name="StringBean">
>     <all>
>      <element name="string1" nillable="true" type="xsd:string"/>
>      <element name="string2" nillable="true" type="xsd:string"/>
>     </all>
>    </complexType>
>    <element name="StringBean" nillable="true" type="tns1:StringBean"/>
>   </schema>
>   <schema targetNamespace="http://string-service"
> xmlns="http://www.w3.org/2001/XMLSchema">
>    <complexType name="ArrayOf_xsd_string">
>     <complexContent>
>      <restriction base="soap:Array">
>       <attribute ref="soapenc:arrayType" wsdl:arrayType="xsd:string[]"/>
>      </restriction>
>     </complexContent>
>    </complexType>
>    <element name="ArrayOf_xsd_string" nillable="true"
> type="intf:ArrayOf_xsd_string"/>
>    <complexType name="ArrayOf_tns1_StringBean">
>     <complexContent>
>      <restriction base="soap:Array">
>       <attribute ref="soapenc:arrayType"
> wsdl:arrayType="tns1:StringBean[]"/>
>      </restriction>
>     </complexContent>
>    </complexType>
>    <element name="ArrayOf_tns1_StringBean" nillable="true"
> type="intf:ArrayOf_tns1_StringBean"/>
>   </schema>
>  </types>
>
>    <wsdl:message name="stringArrayResponse">
>
>       <wsdl:part name="stringArrayResult" type="intf:ArrayOf_xsd_string"/>
>
>    </wsdl:message>
>
>    <wsdl:message name="stringFaultResponse">
>
>       <wsdl:part name="stringFaultResult" type="xsd:string"/>
>
>    </wsdl:message>
>
>    <wsdl:message name="stringBeanArrayResponse">
>
>       <wsdl:part name="stringBeanArrayResult"
> type="intf:ArrayOf_tns1_StringBean"/>
>
>    </wsdl:message>
>
>    <wsdl:message name="getStringResponse">
>
>       <wsdl:part name="getStringResult" type="xsd:string"/>
>
>    </wsdl:message>
>
>    <wsdl:message name="stringConcatRequest">
>
>       <wsdl:part name="in0" type="xsd:string"/>
>
>       <wsdl:part name="in1" type="xsd:string"/>
>
>    </wsdl:message>
>
>    <wsdl:message name="stringBeanArrayRequest">
>
>       <wsdl:part name="in0" type="intf:ArrayOf_tns1_StringBean"/>
>
>    </wsdl:message>
>
>    <wsdl:message name="stringUpperResponse">
>
>       <wsdl:part name="stringUpperResult" type="xsd:string"/>
>
>    </wsdl:message>
>
>    <wsdl:message name="stringArrayRequest">
>
>       <wsdl:part name="in0" type="intf:ArrayOf_xsd_string"/>
>
>    </wsdl:message>
>
>    <wsdl:message name="stringBeanRequest">
>
>       <wsdl:part name="in0" type="tns1:StringBean"/>
>
>    </wsdl:message>
>
>    <wsdl:message name="stringFaultRequest">
>
>    </wsdl:message>
>
>    <wsdl:message name="stringUpperRequest">
>
>       <wsdl:part name="in0" type="xsd:string"/>
>
>    </wsdl:message>
>
>    <wsdl:message name="stringConcatResponse">
>
>       <wsdl:part name="stringConcatResult" type="xsd:string"/>
>
>    </wsdl:message>
>
>    <wsdl:message name="stringBeanResponse">
>
>       <wsdl:part name="stringBeanResult" type="tns1:StringBean"/>
>
>    </wsdl:message>
>
>    <wsdl:message name="getStringRequest">
>
>    </wsdl:message>
>
>    <wsdl:portType name="StringService">
>
>       <wsdl:operation name="stringConcat" parameterOrder="in0 in1">
>
>          <wsdl:input message="intf:stringConcatRequest"/>
>
>          <wsdl:output message="intf:stringConcatResponse"/>
>
>       </wsdl:operation>
>
>       <wsdl:operation name="getString">
>
>          <wsdl:input message="intf:getStringRequest"/>
>
>          <wsdl:output message="intf:getStringResponse"/>
>
>       </wsdl:operation>
>
>       <wsdl:operation name="stringUpper" parameterOrder="in0">
>
>          <wsdl:input message="intf:stringUpperRequest"/>
>
>          <wsdl:output message="intf:stringUpperResponse"/>
>
>       </wsdl:operation>
>
>       <wsdl:operation name="stringBean" parameterOrder="in0">
>
>          <wsdl:input message="intf:stringBeanRequest"/>
>
>          <wsdl:output message="intf:stringBeanResponse"/>
>
>       </wsdl:operation>
>
>       <wsdl:operation name="stringArray" parameterOrder="in0">
>
>          <wsdl:input message="intf:stringArrayRequest"/>
>
>          <wsdl:output message="intf:stringArrayResponse"/>
>
>       </wsdl:operation>
>
>       <wsdl:operation name="stringBeanArray" parameterOrder="in0">
>
>          <wsdl:input message="intf:stringBeanArrayRequest"/>
>
>          <wsdl:output message="intf:stringBeanArrayResponse"/>
>
>       </wsdl:operation>
>
>       <wsdl:operation name="stringFault">
>
>          <wsdl:input message="intf:stringFaultRequest"/>
>
>          <wsdl:output message="intf:stringFaultResponse"/>
>
>       </wsdl:operation>
>
>    </wsdl:portType>
>
>    <wsdl:binding name="StringServiceSoapBinding"
type="intf:StringService">
>
>       <soap:binding style="rpc"
> transport="http://schemas.xmlsoap.org/soap/http"/>
>
>       <wsdl:operation name="stringConcat">
>
>          <soap:operation soapAction="" style="rpc"/>
>
>          <wsdl:input>
>
>             <soap:body
> encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
> namespace="http://string-service" use="encoded"/>
>
>          </wsdl:input>
>
>          <wsdl:output>
>
>             <soap:body
> encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
> namespace="http://string-service" use="encoded"/>
>
>          </wsdl:output>
>
>       </wsdl:operation>
>
>       <wsdl:operation name="getString">
>
>          <soap:operation soapAction="" style="rpc"/>
>
>          <wsdl:input>
>
>             <soap:body
> encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
> namespace="http://string-service" use="encoded"/>
>
>          </wsdl:input>
>
>          <wsdl:output>
>
>             <soap:body
> encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
> namespace="http://string-service" use="encoded"/>
>
>          </wsdl:output>
>
>       </wsdl:operation>
>
>       <wsdl:operation name="stringUpper">
>
>          <soap:operation soapAction="" style="rpc"/>
>
>          <wsdl:input>
>
>             <soap:body
> encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
> namespace="http://string-service" use="encoded"/>
>
>          </wsdl:input>
>
>          <wsdl:output>
>
>             <soap:body
> encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
> namespace="http://string-service" use="encoded"/>
>
>          </wsdl:output>
>
>       </wsdl:operation>
>
>       <wsdl:operation name="stringBean">
>
>          <soap:operation soapAction="" style="rpc"/>
>
>          <wsdl:input>
>
>             <soap:body
> encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
> namespace="http://string-service" use="encoded"/>
>
>          </wsdl:input>
>
>          <wsdl:output>
>
>             <soap:body
> encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
> namespace="http://string-service" use="encoded"/>
>
>          </wsdl:output>
>
>       </wsdl:operation>
>
>       <wsdl:operation name="stringArray">
>
>          <soap:operation soapAction="" style="rpc"/>
>
>          <wsdl:input>
>
>             <soap:body
> encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
> namespace="http://string-service" use="encoded"/>
>
>          </wsdl:input>
>
>          <wsdl:output>
>
>             <soap:body
> encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
> namespace="http://string-service" use="encoded"/>
>
>          </wsdl:output>
>
>       </wsdl:operation>
>
>       <wsdl:operation name="stringBeanArray">
>
>          <soap:operation soapAction="" style="rpc"/>
>
>          <wsdl:input>
>
>             <soap:body
> encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
> namespace="http://string-service" use="encoded"/>
>
>          </wsdl:input>
>
>          <wsdl:output>
>
>             <soap:body
> encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
> namespace="http://string-service" use="encoded"/>
>
>          </wsdl:output>
>
>       </wsdl:operation>
>
>       <wsdl:operation name="stringFault">
>
>          <soap:operation soapAction="" style="rpc"/>
>
>          <wsdl:input>
>
>             <soap:body
> encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
> namespace="http://string-service" use="encoded"/>
>
>          </wsdl:input>
>
>          <wsdl:output>
>
>             <soap:body
> encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
> namespace="http://string-service" use="encoded"/>
>
>          </wsdl:output>
>
>       </wsdl:operation>
>
>    </wsdl:binding>
>
>    <wsdl:service name="StringServiceService">
>
>       <wsdl:port binding="intf:StringServiceSoapBinding"
> name="StringService">
>
>          <soap:address/>
>
>       </wsdl:port>
>
>    </wsdl:service>
>
> </wsdl:definitions>
>


Mime
View raw message