You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-user@axis.apache.org by Luca Fabbri <lu...@assuredsystemsinc.com> on 2005/07/20 04:17:32 UTC

Axis vs. Sun incompatibility??

Hello!

 

I am producing a web service using Sun's stack included with NetBeans 4.1,
which needs to be consumed by a ColdFusion client (which uses Axis).

As long as the types returned by the web service are basic, I have no
problems. However if the types returned are complex, the WSDL produced by
Sun's stack confuses the hell out of Axis, which then proceeds to produce
uncompilable code on the client end. If I use Axis to manually produce the
WSDL on the server end, everything's good again.

What is going on? Which of the two systems is "breaking the rules"? Can you
suggest a solution?

Thanks for your help,
Luca



Sample WSDL produced by NetBeans:

<?xml version="1.0" encoding="UTF-8"?><definitions
xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="urn:GetCustomer/wsdl"
xmlns:ns2="urn:GetCustomer/types"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" name="GetCustomer"
targetNamespace="urn:GetCustomer/wsdl">
<types>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:tns="urn:GetCustomer/types"
xmlns:soap11-enc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
targetNamespace="urn:GetCustomer/types">
<complexType name="getCustomer">
<sequence>
<element name="long_1" type="long"/></sequence></complexType>
<complexType name="getCustomerResponse">
<sequence>
<element name="result" type="tns:Customer"
nillable="true"/></sequence></complexType>
<complexType name="Customer">
<sequence>
<element name="city" type="string" nillable="true"/>
<element name="cust" type="long"/>
<element name="lineA" type="string" nillable="true"/>
<element name="lineB" type="string" nillable="true"/>
<element name="name" type="string" nillable="true"/>
<element name="state" type="string" nillable="true"/>
<element name="zip" type="string" nillable="true"/></sequence></complexType>
<element name="getCustomer" type="tns:getCustomer"/>
<element name="getCustomerResponse"
type="tns:getCustomerResponse"/></schema></types>
<message name="GetCustomerSEI_getCustomer">
<part name="parameters" element="ns2:getCustomer"/></message>
<message name="GetCustomerSEI_getCustomerResponse">
<part name="result" element="ns2:getCustomerResponse"/></message>
<portType name="GetCustomerSEI">
<operation name="getCustomer">
<input message="tns:GetCustomerSEI_getCustomer"/>
<output
message="tns:GetCustomerSEI_getCustomerResponse"/></operation></portType>
<binding name="GetCustomerSEIBinding" type="tns:GetCustomerSEI">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http"
style="document"/>
<operation name="getCustomer">
<soap:operation soapAction=""/>
<input>
<soap:body use="literal"/></input>
<output>
<soap:body use="literal"/></output></operation></binding>
<service name="GetCustomer">
<port name="GetCustomerSEIPort" binding="tns:GetCustomerSEIBinding">
<soap:address location="http://lucaserver:8080/LucaServices/GetCustomer"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"/></port></service></definition
s>



Sample WSDL produced by Axis for the same code:

<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions targetNamespace="urn:GetCustomer"
xmlns:apachesoap="http://xml.apache.org/xml-soap"
xmlns:impl="urn:GetCustomer" xmlns:intf="urn:GetCustomer"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:tns2="http://Luca.asi.com"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">

<wsdl:types>
<schema targetNamespace="http://Luca.asi.com"
xmlns="http://www.w3.org/2001/XMLSchema">
<import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>
<complexType name="Customer">
<sequence>
<element name="city" nillable="true" type="soapenc:string"/>
<element name="cust" type="xsd:long"/>
<element name="lineA" nillable="true" type="soapenc:string"/>
<element name="lineB" nillable="true" type="soapenc:string"/>
<element name="name" nillable="true" type="soapenc:string"/>
<element name="state" nillable="true" type="soapenc:string"/>
<element name="zip" nillable="true" type="soapenc:string"/>
</sequence>
</complexType>
</schema>
</wsdl:types>

<wsdl:message name="getCustomerResponse">

<wsdl:part name="getCustomerReturn" type="tns2:Customer"/>

</wsdl:message>

<wsdl:message name="getCustomerRequest">

<wsdl:part name="in0" type="xsd:long"/>

</wsdl:message>

<wsdl:portType name="GetCustomerSEI">

<wsdl:operation name="getCustomer" parameterOrder="in0">

<wsdl:input message="impl:getCustomerRequest" name="getCustomerRequest"/>

<wsdl:output message="impl:getCustomerResponse" name="getCustomerResponse"/>

</wsdl:operation>

</wsdl:portType>

<wsdl:binding name="GetCustomerSoapBinding" type="impl:GetCustomerSEI">

<wsdlsoap:binding style="rpc"
transport="http://schemas.xmlsoap.org/soap/http"/>

<wsdl:operation name="getCustomer">

<wsdlsoap:operation soapAction=""/>

<wsdl:input name="getCustomerRequest">

<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
namespace="urn:GetCustomer" use="encoded"/>

</wsdl:input>

<wsdl:output name="getCustomerResponse">

<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
namespace="urn:GetCustomer" use="encoded"/>

</wsdl:output>

</wsdl:operation>

</wsdl:binding>

<wsdl:service name="GetCustomerSEIService">

<wsdl:port binding="impl:GetCustomerSoapBinding" name="GetCustomer">

<wsdlsoap:address
location="http://localhost:8080/LucaServices/GetCustomer"/>

</wsdl:port>

</wsdl:service>

</wsdl:definitions>

 


Re: Axis vs. Sun incompatibility??

Posted by Anne Thomas Manes <at...@gmail.com>.
It could be that your Cold Fusion client is using a really old version
of Axis. Axis should have no trouble consuming the WSDL produced by
NetBeans. In fact, if you ask Axis to generate the WSDL with
style="wrapped", it should produce something very similar to the one
produced by NetBeans.

Anne

On 7/19/05, Luca Fabbri <lu...@assuredsystemsinc.com> wrote:
>  
>  
> 
> Hello! 
> 
>   
> 
> I am producing a web service using Sun's stack included with NetBeans 4.1,
> which needs to be consumed by a ColdFusion client (which uses Axis).
>  
>  As long as the types returned by the web service are basic, I have no
> problems. However if the types returned are complex, the WSDL produced by
> Sun's stack confuses the hell out of Axis, which then proceeds to produce
> uncompilable code on the client end. If I use Axis to manually produce the
> WSDL on the server end, everything's good again.
>  
>  What is going on? Which of the two systems is "breaking the rules"? Can you
> suggest a solution?
>  
>  Thanks for your help,
>  Luca 
> 
> 
>  
>  Sample WSDL produced by NetBeans:
>  
>  <?xml version="1.0" encoding="UTF-8"?><definitions
> xmlns="http://schemas.xmlsoap.org/wsdl/"
> xmlns:tns="urn:GetCustomer/wsdl"
> xmlns:ns2="urn:GetCustomer/types"
> xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
> name="GetCustomer" targetNamespace="urn:GetCustomer/wsdl">
>  <types>
>  <schema xmlns="http://www.w3.org/2001/XMLSchema"
> xmlns:tns="urn:GetCustomer/types"
> xmlns:soap11-enc="http://schemas.xmlsoap.org/soap/encoding/"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
> targetNamespace="urn:GetCustomer/types">
>  <complexType name="getCustomer">
>  <sequence>
>  <element name="long_1"
> type="long"/></sequence></complexType>
>  <complexType name="getCustomerResponse">
>  <sequence>
>  <element name="result" type="tns:Customer"
> nillable="true"/></sequence></complexType>
>  <complexType name="Customer">
>  <sequence>
>  <element name="city" type="string" nillable="true"/>
>  <element name="cust" type="long"/>
>  <element name="lineA" type="string" nillable="true"/>
>  <element name="lineB" type="string" nillable="true"/>
>  <element name="name" type="string" nillable="true"/>
>  <element name="state" type="string" nillable="true"/>
>  <element name="zip" type="string"
> nillable="true"/></sequence></complexType>
>  <element name="getCustomer" type="tns:getCustomer"/>
>  <element name="getCustomerResponse"
> type="tns:getCustomerResponse"/></schema></types>
>  <message name="GetCustomerSEI_getCustomer">
>  <part name="parameters"
> element="ns2:getCustomer"/></message>
>  <message name="GetCustomerSEI_getCustomerResponse">
>  <part name="result"
> element="ns2:getCustomerResponse"/></message>
>  <portType name="GetCustomerSEI">
>  <operation name="getCustomer">
>  <input message="tns:GetCustomerSEI_getCustomer"/>
>  <output
> message="tns:GetCustomerSEI_getCustomerResponse"/></operation></portType>
>  <binding name="GetCustomerSEIBinding" type="tns:GetCustomerSEI">
>  <soap:binding
> transport="http://schemas.xmlsoap.org/soap/http"
> style="document"/>
>  <operation name="getCustomer">
>  <soap:operation soapAction=""/>
>  <input>
>  <soap:body use="literal"/></input>
>  <output>
>  <soap:body use="literal"/></output></operation></binding>
>  <service name="GetCustomer">
>  <port name="GetCustomerSEIPort"
> binding="tns:GetCustomerSEIBinding">
>  <soap:address
> location="http://lucaserver:8080/LucaServices/GetCustomer"
> xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"/></port></service></definitions>
>  
>  
>  
>  Sample WSDL produced by Axis for the same code:
>  
>  <?xml version="1.0" encoding="UTF-8"?>
>  <wsdl:definitions targetNamespace="urn:GetCustomer"
> xmlns:apachesoap="http://xml.apache.org/xml-soap"
> xmlns:impl="urn:GetCustomer" xmlns:intf="urn:GetCustomer"
> xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
> xmlns:tns2="http://Luca.asi.com"
> xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
> xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/"
> xmlns:xsd="http://www.w3.org/2001/XMLSchema">
>  
>  <wsdl:types>
>  <schema targetNamespace="http://Luca.asi.com"
> xmlns="http://www.w3.org/2001/XMLSchema">
>  <import
> namespace="http://schemas.xmlsoap.org/soap/encoding/"/>
>  <complexType name="Customer">
>  <sequence>
>  <element name="city" nillable="true" type="soapenc:string"/>
>  <element name="cust" type="xsd:long"/>
>  <element name="lineA" nillable="true" type="soapenc:string"/>
>  <element name="lineB" nillable="true" type="soapenc:string"/>
>  <element name="name" nillable="true" type="soapenc:string"/>
>  <element name="state" nillable="true" type="soapenc:string"/>
>  <element name="zip" nillable="true" type="soapenc:string"/>
>  </sequence>
>  </complexType>
>  </schema>
>  </wsdl:types>
>  
>  <wsdl:message name="getCustomerResponse">
>  
>  <wsdl:part name="getCustomerReturn" type="tns2:Customer"/>
>  
>  </wsdl:message>
>  
>  <wsdl:message name="getCustomerRequest">
>  
>  <wsdl:part name="in0" type="xsd:long"/>
>  
>  </wsdl:message>
>  
>  <wsdl:portType name="GetCustomerSEI">
>  
>  <wsdl:operation name="getCustomer" parameterOrder="in0">
>  
>  <wsdl:input message="impl:getCustomerRequest"
> name="getCustomerRequest"/>
>  
>  <wsdl:output message="impl:getCustomerResponse"
> name="getCustomerResponse"/>
>  
>  </wsdl:operation>
>  
>  </wsdl:portType>
>  
>  <wsdl:binding name="GetCustomerSoapBinding" type="impl:GetCustomerSEI">
>  
>  <wsdlsoap:binding style="rpc"
> transport="http://schemas.xmlsoap.org/soap/http"/>
>  
>  <wsdl:operation name="getCustomer">
>  
>  <wsdlsoap:operation soapAction=""/>
>  
>  <wsdl:input name="getCustomerRequest">
>  
>  <wsdlsoap:body
> encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
> namespace="urn:GetCustomer" use="encoded"/>
>  
>  </wsdl:input>
>  
>  <wsdl:output name="getCustomerResponse">
>  
>  <wsdlsoap:body
> encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
> namespace="urn:GetCustomer" use="encoded"/>
>  
>  </wsdl:output>
>  
>  </wsdl:operation>
>  
>  </wsdl:binding>
>  
>  <wsdl:service name="GetCustomerSEIService">
>  
>  <wsdl:port binding="impl:GetCustomerSoapBinding"
> name="GetCustomer">
>  
>  <wsdlsoap:address
> location="http://localhost:8080/LucaServices/GetCustomer"/>
>  
>  </wsdl:port>
>  
>  </wsdl:service>
>  
>  </wsdl:definitions> 
> 
>