Uploaded image for project: 'Axis'
  1. Axis
  2. AXIS-2143

Array serialization error with multiple namespaces

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Open
    • Critical
    • Resolution: Unresolved
    • 1.2.1
    • None
    • None
    • Axis 1.2.1 and also latest build of 1.3 running under websphere on windows xp. JDK 1.3.

    Description

      Tthe problem still exists with multiple namespaces. For the following wsdl I get an incorrect response of:

      <getCoverageTeamByEcidResponse xmlns="http://coverage.pw.services.crm.jpmorgan.com">
      <getCoverageTeamByEcidReturn>
      <coverageTeamInfoTO>
      <coverageTeamInfoTO>
      <cvrRoleTmrDs xsi:nil="true"/>

      Notice the extra TO entry. It should look like:

      <getCoverageTeamByEcidResponse xmlns="http://coverage.pw.services.crm.jpmorgan.com">
      <getCoverageTeamByEcidReturn>
      <coverageTeamInfoTO>
      <item>
      <cvrRoleTmrDs xsi:nil="true"/>

      Here is the wsdl:

      <?xml version="1.0" encoding="UTF-8"?>
      <wsdl:definitions targetNamespace="http://contact.pw.services.crm.jpmorgan.com" xmlns:apachesoap="http://xml.apache.org/xml-soap" xmlns:impl="http://contact.pw.services.crm.jpmorgan.com" xmlns:intf="http://contact.pw.services.crm.jpmorgan.com" xmlns:tns2="http://request.contact.pw.services.crm.jpmorgan.com" xmlns:tns3="http://headers.message.framework.core.crm.jpmorgan.com" xmlns:tns4="http://response.contact.pw.services.crm.jpmorgan.com" xmlns:tns5="http://to.pw.services.crm.jpmorgan.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 created by Apache Axis version: 1.3
      Built on Jul 26, 2005 (04:05:35 GMT+00:00)-->
      <wsdl:types>
      <schema elementFormDefault="qualified" targetNamespace="http://contact.pw.services.crm.jpmorgan.com" xmlns="http://www.w3.org/2001/XMLSchema">
      <import namespace="http://to.pw.services.crm.jpmorgan.com"/>
      <import namespace="http://response.contact.pw.services.crm.jpmorgan.com"/>
      <import namespace="http://headers.message.framework.core.crm.jpmorgan.com"/>
      <import namespace="http://request.contact.pw.services.crm.jpmorgan.com"/>
      <element name="getContactByEcid">
      <complexType>
      <sequence>
      <element name="request" type="tns2:GetContactByEcidRequest"/>
      </sequence>
      </complexType>
      </element>
      <complexType name="ArrayOf_tns3_SortDetail">
      <sequence>
      <element maxOccurs="unbounded" minOccurs="0" name="item" type="tns3:SortDetail"/>
      </sequence>
      </complexType>
      <element name="getContactByEcidResponse">
      <complexType>
      <sequence>
      <element name="getContactByEcidReturn" type="tns4:GetContactByEcidResponse"/>
      </sequence>
      </complexType>
      </element>
      <complexType name="ArrayOf_tns3_ErrorIdentifier">
      <sequence>
      <element maxOccurs="unbounded" minOccurs="0" name="item" type="tns3:ErrorIdentifier"/>
      </sequence>
      </complexType>
      <complexType name="ArrayOf_tns5_ClientContactTO">
      <sequence>
      <element maxOccurs="unbounded" minOccurs="0" name="item" type="tns5:ClientContactTO"/>
      </sequence>
      </complexType>
      </schema>
      <schema elementFormDefault="qualified" targetNamespace="http://headers.message.framework.core.crm.jpmorgan.com" xmlns="http://www.w3.org/2001/XMLSchema">
      <import namespace="http://to.pw.services.crm.jpmorgan.com"/>
      <import namespace="http://response.contact.pw.services.crm.jpmorgan.com"/>
      <import namespace="http://request.contact.pw.services.crm.jpmorgan.com"/>
      <import namespace="http://contact.pw.services.crm.jpmorgan.com"/>
      <complexType name="SortDetail">
      <sequence>
      <element name="sortColumn" nillable="true" type="xsd:string"/>
      <element name="sortOrder" nillable="true" type="xsd:string"/>
      </sequence>
      </complexType>
      <complexType name="PagingRequestDetail">
      <sequence>
      <element name="endRow" type="xsd:int"/>
      <element name="maxRow" type="xsd:int"/>
      <element name="sortDetail" nillable="true" type="impl:ArrayOf_tns3_SortDetail"/>
      <element name="startRow" type="xsd:int"/>
      </sequence>
      </complexType>
      <complexType name="RequestHeader">
      <sequence>
      <element name="applicationLineOfBusinessRoleIdentifier" nillable="true" type="xsd:string"/>
      <element name="requestingAppID" nillable="true" type="xsd:string"/>
      <element name="submitTime" nillable="true" type="xsd:string"/>
      <element name="trackingID" nillable="true" type="xsd:string"/>
      <element name="workerStandardIdentifier" nillable="true" type="xsd:string"/>
      </sequence>
      </complexType>
      <complexType name="Request">
      <sequence>
      <element name="pagingRequestDetail" nillable="true" type="tns3:PagingRequestDetail"/>
      <element name="requestHeader" nillable="true" type="tns3:RequestHeader"/>
      <element name="scope" nillable="true" type="xsd:string"/>
      </sequence>
      </complexType>
      <complexType name="PagingResponseDetail">
      <sequence>
      <element name="rowReturned" type="xsd:int"/>
      <element name="totalRowAvailable" type="xsd:int"/>
      </sequence>
      </complexType>
      <complexType name="ErrorIdentifier">
      <sequence>
      <element name="key" nillable="true" type="xsd:string"/>
      <element name="value" nillable="true" type="xsd:string"/>
      </sequence>
      </complexType>
      <complexType name="ErrorDetail">
      <sequence>
      <element name="applicationErrorCode" nillable="true" type="xsd:string"/>
      <element name="applicationErrorID" nillable="true" type="xsd:string"/>
      <element name="applicationErrorMsg" nillable="true" type="xsd:string"/>
      <element name="errorIdentifier" nillable="true" type="impl:ArrayOf_tns3_ErrorIdentifier"/>
      <element name="systemErrorCode" nillable="true" type="xsd:string"/>
      <element name="systemErrorMsg" nillable="true" type="xsd:string"/>
      </sequence>
      </complexType>
      <complexType name="ResponseHeader">
      <sequence>
      <element name="errorDetail" nillable="true" type="tns3:ErrorDetail"/>
      <element name="responseStatus" nillable="true" type="xsd:string"/>
      <element name="submitTime" nillable="true" type="xsd:string"/>
      <element name="successStatusCode" nillable="true" type="xsd:string"/>
      <element name="trackingID" nillable="true" type="xsd:string"/>
      </sequence>
      </complexType>
      <complexType name="Response">
      <sequence>
      <element name="pagingResponseDetail" nillable="true" type="tns3:PagingResponseDetail"/>
      <element name="responseHeader" nillable="true" type="tns3:ResponseHeader"/>
      </sequence>
      </complexType>
      </schema>
      <schema elementFormDefault="qualified" targetNamespace="http://request.contact.pw.services.crm.jpmorgan.com" xmlns="http://www.w3.org/2001/XMLSchema">
      <import namespace="http://to.pw.services.crm.jpmorgan.com"/>
      <import namespace="http://response.contact.pw.services.crm.jpmorgan.com"/>
      <import namespace="http://headers.message.framework.core.crm.jpmorgan.com"/>
      <import namespace="http://contact.pw.services.crm.jpmorgan.com"/>
      <complexType name="GetContactByEcidRequest">
      <complexContent>
      <extension base="tns3:Request">
      <sequence>
      <element name="ecid" nillable="true" type="xsd:string"/>
      </sequence>
      </extension>
      </complexContent>
      </complexType>
      </schema>
      <schema elementFormDefault="qualified" targetNamespace="http://to.pw.services.crm.jpmorgan.com" xmlns="http://www.w3.org/2001/XMLSchema">
      <import namespace="http://response.contact.pw.services.crm.jpmorgan.com"/>
      <import namespace="http://headers.message.framework.core.crm.jpmorgan.com"/>
      <import namespace="http://request.contact.pw.services.crm.jpmorgan.com"/>
      <import namespace="http://contact.pw.services.crm.jpmorgan.com"/>
      <complexType name="ClientContactTO">
      <sequence>
      <element name="addressCity" nillable="true" type="xsd:string"/>
      <element name="addressCode" nillable="true" type="xsd:string"/>
      <element name="addressCountryCode" nillable="true" type="xsd:string"/>
      <element name="addressId" nillable="true" type="xsd:string"/>
      <element name="addressLine1" nillable="true" type="xsd:string"/>
      <element name="addressLine2" nillable="true" type="xsd:string"/>
      <element name="addressLine3" nillable="true" type="xsd:string"/>
      <element name="addressPostalCode" nillable="true" type="xsd:string"/>
      <element name="addressStateCode" nillable="true" type="xsd:string"/>
      <element name="clientId" nillable="true" type="xsd:string"/>
      <element name="commEmail" nillable="true" type="xsd:string"/>
      <element name="commTypeCode" nillable="true" type="xsd:string"/>
      <element name="commTypeId" nillable="true" type="xsd:string"/>
      <element name="commWokePhone" nillable="true" type="xsd:string"/>
      <element name="commWorkFax" nillable="true" type="xsd:string"/>
      <element name="commWorkFaxExt" nillable="true" type="xsd:string"/>
      <element name="commWorkPhoneExt" nillable="true" type="xsd:string"/>
      <element name="contactDeleteInd" nillable="true" type="xsd:string"/>
      <element name="contactFirstName" nillable="true" type="xsd:string"/>
      <element name="contactId" nillable="true" type="xsd:string"/>
      <element name="contactInactiveInd" nillable="true" type="xsd:string"/>
      <element name="contactLastName" nillable="true" type="xsd:string"/>
      <element name="contactMiddleName" nillable="true" type="xsd:string"/>
      <element name="contactPrefixCode" nillable="true" type="xsd:string"/>
      <element name="contactPrimaryInd" nillable="true" type="xsd:string"/>
      <element name="contactSalutation" nillable="true" type="xsd:string"/>
      <element name="contactSuffix" nillable="true" type="xsd:string"/>
      <element name="contactTitle" nillable="true" type="xsd:string"/>
      <element name="ecid" nillable="true" type="xsd:string"/>
      </sequence>
      </complexType>
      </schema>
      <schema elementFormDefault="qualified" targetNamespace="http://response.contact.pw.services.crm.jpmorgan.com" xmlns="http://www.w3.org/2001/XMLSchema">
      <import namespace="http://to.pw.services.crm.jpmorgan.com"/>
      <import namespace="http://headers.message.framework.core.crm.jpmorgan.com"/>
      <import namespace="http://request.contact.pw.services.crm.jpmorgan.com"/>
      <import namespace="http://contact.pw.services.crm.jpmorgan.com"/>
      <complexType name="GetContactByEcidResponse">
      <complexContent>
      <extension base="tns3:Response">
      <sequence>
      <element name="clientContactTO" nillable="true" type="impl:ArrayOf_tns5_ClientContactTO"/>
      </sequence>
      </extension>
      </complexContent>
      </complexType>
      </schema>
      </wsdl:types>

      <wsdl:message name="getContactByEcidResponse">

      <wsdl:part element="impl:getContactByEcidResponse" name="parameters"/>

      </wsdl:message>

      <wsdl:message name="getContactByEcidRequest">

      <wsdl:part element="impl:getContactByEcid" name="parameters"/>

      </wsdl:message>

      <wsdl:portType name="GetContactByEcid">

      <wsdl:operation name="getContactByEcid">

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

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

      </wsdl:operation>

      </wsdl:portType>

      <wsdl:binding name="GetContactByEcidSoapBinding" type="impl:GetContactByEcid">

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

      <wsdl:operation name="getContactByEcid">

      <wsdlsoap:operation soapAction=""/>

      <wsdl:input name="getContactByEcidRequest">

      <wsdlsoap:body use="literal"/>

      </wsdl:input>

      <wsdl:output name="getContactByEcidResponse">

      <wsdlsoap:body use="literal"/>

      </wsdl:output>

      </wsdl:operation>

      </wsdl:binding>

      <wsdl:service name="GetContactByEcidService">

      <wsdl:port binding="impl:GetContactByEcidSoapBinding" name="GetContactByEcid">

      <wsdlsoap:address location="http://localhost:2000/PWServicesWEB/services/GetContactByEcid"/>

      </wsdl:port>

      </wsdl:service>

      </wsdl:definitions>

      ----------------------------------------------------------------------------------------------------------

      I can get a correct response if I remove all the extra namespaces and collapse my objects into a single namespace like this:

      <?xml version="1.0" encoding="UTF-8"?>
      <wsdl:definitions targetNamespace="http://coverage.pw.services.crm.jpmorgan.com" xmlns:apachesoap="http://xml.apache.org/xml-soap" xmlns:impl="http://coverage.pw.services.crm.jpmorgan.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 created by Apache Axis version: 1.2.1
      Built on Jun 15, 2005 (04:05:16 GMT+00:00)-->
      <wsdl:types>
      <schema elementFormDefault="qualified" targetNamespace="http://coverage.pw.services.crm.jpmorgan.com" xmlns="http://www.w3.org/2001/XMLSchema">
      <element name="getCoverageTeamByEcid">
      <complexType>
      <sequence>
      <element name="request" type="impl:GetCoverageTeamByEcidRequest"/>
      </sequence>
      </complexType>
      </element>
      <complexType name="ArrayOf_impl_SortDetail">
      <sequence>
      <element maxOccurs="unbounded" minOccurs="0" name="item" type="impl:SortDetail"/>
      </sequence>
      </complexType>
      <element name="getCoverageTeamByEcidResponse">
      <complexType>
      <sequence>
      <element name="getCoverageTeamByEcidReturn" type="impl:GetCoverageTeamByEcidResponse"/>
      </sequence>
      </complexType>
      </element>
      <complexType name="ArrayOf_impl_ErrorIdentifier">
      <sequence>
      <element maxOccurs="unbounded" minOccurs="0" name="item" type="impl:ErrorIdentifier"/>
      </sequence>
      </complexType>
      <complexType name="ArrayOf_impl_CoverageTeamInfoTO">
      <sequence>
      <element maxOccurs="unbounded" minOccurs="0" name="item" type="impl:CoverageTeamInfoTO"/>
      </sequence>
      </complexType>
      <complexType name="SortDetail">
      <sequence>
      <element name="sortColumn" nillable="true" type="xsd:string"/>
      <element name="sortOrder" nillable="true" type="xsd:string"/>
      </sequence>
      </complexType>
      <complexType name="PagingRequestDetail">
      <sequence>
      <element name="endRow" type="xsd:int"/>
      <element name="maxRow" type="xsd:int"/>
      <element name="sortDetail" nillable="true" type="impl:ArrayOf_impl_SortDetail"/>
      <element name="startRow" type="xsd:int"/>
      </sequence>
      </complexType>
      <complexType name="RequestHeader">
      <sequence>
      <element name="applicationLineOfBusinessRoleIdentifier" nillable="true" type="xsd:string"/>
      <element name="requestingAppID" nillable="true" type="xsd:string"/>
      <element name="submitTime" nillable="true" type="xsd:string"/>
      <element name="trackingID" nillable="true" type="xsd:string"/>
      <element name="workerStandardIdentifier" nillable="true" type="xsd:string"/>
      </sequence>
      </complexType>
      <complexType name="Request">
      <sequence>
      <element name="pagingRequestDetail" nillable="true" type="impl:PagingRequestDetail"/>
      <element name="requestHeader" nillable="true" type="impl:RequestHeader"/>
      <element name="scope" nillable="true" type="xsd:string"/>
      </sequence>
      </complexType>
      <complexType name="PagingResponseDetail">
      <sequence>
      <element name="rowReturned" type="xsd:int"/>
      <element name="totalRowAvailable" type="xsd:int"/>
      </sequence>
      </complexType>
      <complexType name="ErrorIdentifier">
      <sequence>
      <element name="key" nillable="true" type="xsd:string"/>
      <element name="value" nillable="true" type="xsd:string"/>
      </sequence>
      </complexType>
      <complexType name="ErrorDetail">
      <sequence>
      <element name="applicationErrorCode" nillable="true" type="xsd:string"/>
      <element name="applicationErrorID" nillable="true" type="xsd:string"/>
      <element name="applicationErrorMsg" nillable="true" type="xsd:string"/>
      <element name="errorIdentifier" nillable="true" type="impl:ArrayOf_impl_ErrorIdentifier"/>
      <element name="systemErrorCode" nillable="true" type="xsd:string"/>
      <element name="systemErrorMsg" nillable="true" type="xsd:string"/>
      </sequence>
      </complexType>
      <complexType name="ResponseHeader">
      <sequence>
      <element name="errorDetail" nillable="true" type="impl:ErrorDetail"/>
      <element name="responseStatus" nillable="true" type="xsd:string"/>
      <element name="submitTime" nillable="true" type="xsd:string"/>
      <element name="successStatusCode" nillable="true" type="xsd:string"/>
      <element name="trackingID" nillable="true" type="xsd:string"/>
      </sequence>
      </complexType>
      <complexType name="Response">
      <sequence>
      <element name="pagingResponseDetail" nillable="true" type="impl:PagingResponseDetail"/>
      <element name="responseHeader" nillable="true" type="impl:ResponseHeader"/>
      </sequence>
      </complexType>
      <complexType name="GetCoverageTeamByEcidRequest">
      <complexContent>
      <extension base="impl:Request">
      <sequence>
      <element name="ecid" nillable="true" type="xsd:string"/>
      </sequence>
      </extension>
      </complexContent>
      </complexType>
      <complexType name="CoverageTeamInfoTO">
      <sequence>
      <element name="cvrRoleTmrDs" nillable="true" type="xsd:string"/>
      <element name="cvrTeamMembTmrCd" nillable="true" type="xsd:string"/>
      <element name="employeeCityName" nillable="true" type="xsd:string"/>
      <element name="employeeEmail" nillable="true" type="xsd:string"/>
      <element name="employeeFirstName" nillable="true" type="xsd:string"/>
      <element name="employeeLastName" nillable="true" type="xsd:string"/>
      <element name="employeeMiddleName" nillable="true" type="xsd:string"/>
      <element name="employeePhone" nillable="true" type="xsd:string"/>
      <element name="employeeStandardId" nillable="true" type="xsd:string"/>
      <element name="employeeStateCode" nillable="true" type="xsd:string"/>
      <element name="employeeTitleName" nillable="true" type="xsd:string"/>
      <element name="primaryFlag" nillable="true" type="xsd:string"/>
      </sequence>
      </complexType>
      <complexType name="GetCoverageTeamByEcidResponse">
      <complexContent>
      <extension base="impl:Response">
      <sequence>
      <element name="coverageTeamInfoTO" nillable="true" type="impl:ArrayOf_impl_CoverageTeamInfoTO"/>
      </sequence>
      </extension>
      </complexContent>
      </complexType>
      </schema>
      </wsdl:types>

      <wsdl:message name="getCoverageTeamByEcidResponse">

      <wsdl:part element="impl:getCoverageTeamByEcidResponse" name="parameters"/>

      </wsdl:message>

      <wsdl:message name="getCoverageTeamByEcidRequest">

      <wsdl:part element="impl:getCoverageTeamByEcid" name="parameters"/>

      </wsdl:message>

      <wsdl:portType name="GetCoverageTeamByEcid">

      <wsdl:operation name="getCoverageTeamByEcid">

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

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

      </wsdl:operation>

      </wsdl:portType>

      <wsdl:binding name="GetCoverageTeamByEcidSoapBinding" type="impl:GetCoverageTeamByEcid">

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

      <wsdl:operation name="getCoverageTeamByEcid">

      <wsdlsoap:operation soapAction=""/>

      <wsdl:input name="getCoverageTeamByEcidRequest">

      <wsdlsoap:body use="literal"/>

      </wsdl:input>

      <wsdl:output name="getCoverageTeamByEcidResponse">

      <wsdlsoap:body use="literal"/>

      </wsdl:output>

      </wsdl:operation>

      </wsdl:binding>

      <wsdl:service name="GetCoverageTeamByEcidService">

      <wsdl:port binding="impl:GetCoverageTeamByEcidSoapBinding" name="GetCoverageTeamByEcid">

      <wsdlsoap:address location="http://localhost:2000/PWServicesWEB/services/GetCoverageTeamByEcid"/>

      </wsdl:port>

      </wsdl:service>

      </wsdl:definitions>

      Attachments

        1. MyBean.java
          5 kB
          daniel damon
        2. TestService.java
          0.5 kB
          daniel damon
        3. TestService.wsdl
          4 kB
          daniel damon

        Issue Links

          Activity

            People

              Unassigned Unassigned
              kenkatsma Ken Katsma
              Votes:
              1 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated: