axis-java-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Ron Reynolds" <...@RonReynolds.com>
Subject Re: Axis WSDL arrays read by .NET client
Date Tue, 20 Dec 2005 05:37:24 GMT
Axis WSDL arrays read by .NET clientstep 1 - figure out if you can get away from SOAP-encoding
and switch to document-literal - SOAP-encoding is the root of much evil in web-service interop.
step 2 - if you can't get away from SOAP-encoding... see step 1. :-/
  ----- Original Message ----- 
  From: Luciano Belotto 
  To: axis-user@ws.apache.org 
  Sent: Monday, December 19, 2005 8:58 PM
  Subject: Axis WSDL arrays read by .NET client


  Hello,

  Using Java Apache Axis 1.3 final.

  Read many postings on this, but still don't get it... My issue is in regards to arrays defined
on my Axis-generated WSDL's being consumed by .net.

  Listed far below in an XSD I'm using. It contains an element called AC_In_Out_Service_Outgoing_Element.
I generate this XSD into java classes, write a function to return an array (using []) of AC_In_Out_Service_Outgoing_Element.
I then publish the method to a WS with Axis and Axis generates that part of it like so:

  complexType name="ArrayOfAC_In_Out_Service_Outgoing_Element">
  -
          <complexContent>
  -
          <restriction base="soapenc:Array">
  <attribute ref="soapenc:arrayType" wsdl:arrayType="tns1:AC_In_Out_Service_Outgoing_Element[]"/>
  </restriction>
  </complexContent>
  </complexType>

  A .net client consumes that file. However, the element inside contains an unbounded set
of elements called AC_In_Out_Service_Lines_Defect, which has inside AC_In_Out_Service_Line_Defect_Type
which is an array of AC_In_Out_Service_Line_Defect. The WSDL for it comes out as:

  <complexType name="AC_In_Out_Service_Line_Defect_Type">
  -
          <sequence>
  <element maxOccurs="unbounded" name="AC_In_Out_Service_Line_Defect" nillable="true" type="tns1:AC_In_Out_Service_Line_Defect"/>
  <element name="AC_In_Out_Service_Line_DefectCount" type="xsd:int"/>
  <element name="valid" type="xsd:boolean"/>
  </sequence>
  </complexType>


  Why the difference in how Axis generates the arrays? The problem is, a .net client says
there is an error on this part... It says it is trying to assign a single AC_In_Out_Service_Line_Defect
object to an arrary AC_In_Out_Service_Line_Defect[].

  If I generate the client with java/axis, the client-side proxies look the same. But with
java/axis client, it consumes fine. This problem is only on .NET client. But why?

  Below is the Tech_Records_AC_In_Out_Service_Notification.xsd.XSD:






  <?xml version="1.0" encoding="UTF-8"?>
  <!--
  TRAX Interface Tech_Records_AC_In_Out_Service_Notification Version 0.0.2
  Last updated: 2005-12-08T15:45:00

  Revision History:

  Version 0.0.2
  =============
  Added element <initial_Cause> to WO line and Defect line.


  Version 0.0.1
  =============
  Initial releases to customers

  -->
  <schema xmlns="http://www.w3.org/2001/XMLSchema"
  targetNamespace="http://trax.aero/xml/Tech_Records_AC_In_Out_Service_Notification.xsd"
                  xmlns:traxSys="http://trax.aero/xml/TraxSystem.xsd"
                  xmlns:AC_In_Out_Service_Notification="http://trax.aero/xml/Tech_Records_AC_In_Out_Service_Notification.xsd">
                 
          <import namespace="http://trax.aero/xml/TraxSystem.xsd"
                  schemaLocation="TraxSystem.xsd">
          </import>

          <complexType name="AC_In_Out_Service_Outgoing_Type">
                  <sequence minOccurs="1" maxOccurs="1">
                  <element name="out_Service_No" type="AC_In_Out_Service_Notification:out_Service_No"
minOccurs="0" maxOccurs="1">
                          <annotation>
                                  <documentation></documentation>
                          </annotation>
                  </element>
                  <element name="ac" type="AC_In_Out_Service_Notification:AC" minOccurs="0"
maxOccurs="1">
                          <annotation>
                                  <documentation></documentation>
                          </annotation>
                  </element>
                  <element name="out_Of_Service_Station" type="AC_In_Out_Service_Notification:out_Of_Service_Station"
minOccurs="0" maxOccurs="1">
                          <annotation>
                                  <documentation></documentation>
                          </annotation>
                  </element>
                  <element name="modified_By" type="traxSys:modified_By" minOccurs="0"
maxOccurs="1">
                          <annotation>
                                  <documentation></documentation>
                          </annotation>
                  </element>
                  <element name="modified_date" type="traxSys:modified_Date" minOccurs="0"
maxOccurs="1"></element>
                  <element name="AC_In_Out_Service_Lines_WO"
                          type="AC_In_Out_Service_Notification:AC_In_Out_Service_Line_WO_Type"
                          minOccurs="0" maxOccurs="1">
                  </element>
                  <element name="AC_In_Out_Service_Lines_Defect" type="AC_In_Out_Service_Notification:AC_In_Out_Service_Line_Defect_Type"
minOccurs="0" maxOccurs="1"></element>
                  <element name="flight_status" type="AC_In_Out_Service_Notification:flight_Status"
minOccurs="0" maxOccurs="1"></element>
                  <element name="ac_Schedule_Out_Service_Date" type="dateTime" minOccurs="0"
maxOccurs="1"></element>
                  <element name="ac_Out_Of_Svr_Advised_Date" type="dateTime" minOccurs="0"
maxOccurs="1"></element>
                  <element name="ac_Schedule_In_Service_Date" type="dateTime" minOccurs="0"
maxOccurs="1"></element>
                  <element name="ac_Actual_In_Service_Date" type="dateTime" minOccurs="0"
maxOccurs="1"></element>
                  </sequence>
                  </complexType>
         
          <simpleType name="out_Service_No">
          <annotation>
                  <documentation>Control number for the out of service. This is the
unique identifier for an A/C in or out of service notifcation.
  </documentation>
          </annotation>
          <restriction base="integer">
                          <totalDigits value="8"></totalDigits>
          </restriction>
          </simpleType>  
         
          <simpleType name="AC">
          <annotation>
                  <documentation>Aircraft tail number or registration of aircraft.</documentation>
          </annotation>
          <restriction base="traxSys:varcharTwoTen">
                          <minLength value="1"></minLength>
                          <maxLength value="10"></maxLength>
                  </restriction>
          </simpleType>
         
          <simpleType name="flight_Status">
          <annotation>
                  <documentation>Indicator as to whether an item is causing the A/C
to be in or out of service. Note that if at least one item indicates the A/C should be out
of service, then it should be treated as being out of service.
  </documentation>
          </annotation>
          <restriction base="traxSys:varcharTwoTen">
                          <minLength value="1"></minLength>
                          <maxLength value="10"></maxLength>
                  </restriction>
          </simpleType>  
         
          <simpleType name="out_Of_Service_Station">
          <annotation>
                  <documentation>Station where aircraft was placed in or out of service.
  </documentation>
          </annotation>
          <restriction base="traxSys:varcharTwoTen">                     
                          <maxLength value="10"></maxLength>
                  </restriction>
          </simpleType>
         
          <simpleType name="defect_Type">
          <annotation>
                  <documentation>STC: DEFECTTYPE
  STC Description: If aircraft is out of service due to a defect, this is         the type
of defect.
  </documentation>
          </annotation>
          <restriction base="string">                    
                          <maxLength value="8"></maxLength>
                  </restriction>
          </simpleType>
         
          <simpleType name="defect">
          <annotation>
                  <documentation> If aircraft is out of service due to a defect, this
is the defect number.
  </documentation>
          </annotation>
          <restriction base="string">                    
                          <maxLength value="12"></maxLength>
                  </restriction>
          </simpleType>
         
          <simpleType name="defect_Item">
          <annotation>
                  <documentation> If aircraft is out of service due to a defect, this
is the item number of the defect  that caused aircraft to go out of service.</documentation>
          </annotation>
          <restriction base="integer">
                          <totalDigits value ="12"></totalDigits>
                  </restriction>
          </simpleType>
         
          <simpleType name="WO">
                  <annotation>
                          <documentation>Work Order Number.</documentation>
                  </annotation>
                  <restriction base="integer">
                          <totalDigits value="8"></totalDigits>
                  </restriction>
          </simpleType>

          <simpleType name="modified_By">
                  <annotation>
                          <documentation>
                                  The user stamp of the last save of the record.
                          </documentation>
                  </annotation>
                  <restriction base="traxSys:varcharTwoTen">
                          <maxLength value="10"></maxLength>
                  </restriction>
          </simpleType>

          <simpleType name="hold_Boarding">
                  <annotation>
                          <documentation>
                                  If boarding should be stopped. Possible Values: Y N
                          </documentation>
                  </annotation>
                  <restriction base="traxSys:varcharTwoTen">
                          <maxLength value="10"></maxLength>
                  </restriction>
          </simpleType>

          <element name="AC_In_Out_Service_Outgoing_Element"
                  type="AC_In_Out_Service_Notification:AC_In_Out_Service_Outgoing_Type">
          </element>

          <complexType name="AC_In_Out_Service_Line_WO_Type">
                  <sequence minOccurs="0" maxOccurs="1">
                          <element name="AC_In_Out_Service_Line_WO" minOccurs="0" maxOccurs="unbounded">
                                  <complexType>
                                          <sequence minOccurs="0" maxOccurs="1">
                                                  <element name="wo" type="AC_In_Out_Service_Notification:WO"
minOccurs="0" maxOccurs="1"></element>
                                                  <element name="flight_Status" type="AC_In_Out_Service_Notification:flight_Status"
minOccurs="0" maxOccurs="1"></element>
                                                  <element name="hold_Boarding" type="AC_In_Out_Service_Notification:hold_Boarding"
minOccurs="0" maxOccurs="1"></element>
                                                  <element name="ac_Schedule_Out_Service_Date"
type="dateTime" minOccurs="0" maxOccurs="1"></element>
                                                  <element name="ac_Out_Of_Svr_Advised_Date"
type="dateTime" minOccurs="0" maxOccurs="1"></element>
                                                  <element name="ac_Schedule_In_Service_Date"
type="dateTime" minOccurs="0" maxOccurs="1"></element>
                                                  <element name="ac_Actual_In_Service_Date"
type="dateTime" minOccurs="0" maxOccurs="1"></element>
                                                  <element name="initial_Cause" type="boolean"
minOccurs="0" maxOccurs="1">
                                                          <annotation>
                                                                  <documentation>This
element will be set to true if this item was the one that prompted the creation of the ac_in_out_service
notification.
  Since this is a WO it is assumed that the AC going out of service was scheduled.</documentation>
                                                          </annotation>
                                                  </element>
                                          </sequence>
                                  </complexType>
                          </element>
                  </sequence>
          </complexType>

          <complexType name="AC_In_Out_Service_Line_Defect_Type">
                  <sequence minOccurs="0" maxOccurs="1">
                          <element name="AC_In_Out_Service_Line_Defect" minOccurs="0" maxOccurs="unbounded">
                                  <complexType>
                                          <sequence minOccurs="0" maxOccurs="1">
                                                  <element name="defect" type="AC_In_Out_Service_Notification:defect"
minOccurs="0" maxOccurs="1"></element>
                                                  <element name="defect_Type" type="AC_In_Out_Service_Notification:defect_Type"
minOccurs="0" maxOccurs="1"></element>
                                                  <element name="defect_Item" type="AC_In_Out_Service_Notification:defect_Item"
minOccurs="0" maxOccurs="1"></element>
                                                  <element name="flight_Status" type="AC_In_Out_Service_Notification:flight_Status"
minOccurs="0" maxOccurs="1"></element>
                                                  <element name="hold_Boarding" type="AC_In_Out_Service_Notification:hold_Boarding"
minOccurs="0" maxOccurs="1"></element>
                                                  <element name="ac_Schedule_Out_Service_Date"
type="dateTime" minOccurs="0" maxOccurs="1"></element>
                                                  <element name="ac_Out_Of_Svr_Advised_Date"
type="dateTime" minOccurs="0" maxOccurs="1"></element>
                                                  <element name="ac_Schedule_In_Service_Date"
type="dateTime" minOccurs="0" maxOccurs="1"></element>
                                                  <element name="ac_Actual_In_Service_Date"
type="dateTime" minOccurs="0" maxOccurs="1"></element>
                                                  <element name="initial_Cause" type="boolean"
minOccurs="0" maxOccurs="1">
                                                          <annotation>
                                                                  <documentation>This
element will be set to true if this item was the one that prompted the creation of the ac_in_out_service
notification.
  Since this is a defect it is assumed that the AC going out of service was unscheduled.</documentation>
                                                          </annotation>
                                                  </element>
                                          </sequence>
                                  </complexType>
                          </element>
                  </sequence>
          </complexType>

          <complexType name="AC_In_Out_Service_Query_Type">
                  <sequence>
                          <element name="get_OutOfService_Pending_Records" type="boolean"
minOccurs="0" maxOccurs="1">
                                  <annotation>
                                          <documentation>Set this parameter to true
to only retrieve the records that are currently out of service or pending out of service status.
  </documentation>
                                  </annotation>
                          </element>
                  </sequence>
          </complexType>

          <element name="AC_In_Out_Service_Query_Element" type="AC_In_Out_Service_Notification:AC_In_Out_Service_Query_Type"></element>

  </schema>




Mime
View raw message