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 szymono <sz...@gmail.com> on 2006/11/09 20:26:25 UTC

Problem with array in custom type in .net client


Hi,

first of all - sorry for my english...


Ok, I have java axis webservice with some methods. One of them is:

public GetFreeNumbersOutDTO getFreeNumbers(String iterationGuid, int
category,
int quantity) { ...

which return GetFreeNumbersOutDTO.

Structure of this object:

class GetFreeNumberOutDTO {

   Status status;

   Msisdn[] msisdn;

...
}

class Status {

   int code;

   String text;

...
}

class Msisdn {

   String msisdnNo;

...
}


I wrote client application in java and webservice returns property values.

But I allso use .net webservicestudio to testing webservice and there is
some problem with my service:

above method returns the following object on response:

GetFreeNumbersOutDTO result {
   Msisdn[] results;
   Status status {
       code: 1;
       text: OK;
   }
} 

but should be:

GetFreeNumbersOutDTO result {
  Msisdn[3] results {
      Msisdn {
           msisdnNo: 800002000;
      },
      Msisdn {
           msisdnNo: 800002001
      },
      Msisdn {
           msisdnNo: 800002002
      }
   }
  Status status {
      code: 1;
      text: OK;
  }
} 


Why? here is some xml from request and response:

Request:
<?xml version="1.0" encoding="utf-16"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/";
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
xmlns:xsd="http://www.w3.org/2001/XMLSchema">;
 <soap:Body>
   <getFreeNumbers xmlns="http://blstream.com/soa/activation/">;
     <iterationGuid>iter1</iterationGuid>
     <category>1</category>
     <quantity>3</quantity>
   </getFreeNumbers>
 </soap:Body>
</soap:Envelope>

Response:
<?xml version="1.0" encoding="utf-16"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/";
xmlns:xsd="http://www.w3.org/2001/XMLSchema";
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">;
 <soapenv:Body>
   <getFreeNumbersResponse xmlns="http://blstream.com/soa/activation/">;
     <getFreeNumbersReturn>
       <result>
         <result>
           <msisdnNo>800002000</msisdnNo>
         </result>
         <result>
           <msisdnNo>800002001</msisdnNo>
         </result>
         <result>
           <msisdnNo>800002002</msisdnNo>
         </result>
       </result>
       <status>
         <code>1</code>
         <text>OK</text>
       </status>
     </getFreeNumbersReturn>
   </getFreeNumbersResponse>
 </soapenv:Body>
</soapenv:Envelope>


As you can see array should not be empty - .net has some problem with
deserializing object but why? Maybe i have wrong configuration:


WSDD:

<?xml version="1.0" encoding="UTF-8"?>
<deployment xmlns="http://xml.apache.org/axis/wsdd/";
xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">;

       <globalConfiguration>
               <parameter name="sendMultiRefs" value="true"/>
               <parameter name="disablePrettyXML" value="false"/>
               <parameter name="dotNetSoapEncFix" value="true"/>
               <parameter name="enableNamespacePrefixOptimization"
value="true"/>
               <parameter name="enableList" value="true"/>
               <parameter name="sendXMLDeclaration" value="true"/>
               <parameter name="sendXsiTypes" value="true"/>
       </globalConfiguration>

       <handler name="LocalResponder"
type="java:org.apache.axis.transport.local.LocalResponder"/>
       <handler name="URLMapper"
type="java:org.apache.axis.handlers.http.URLMapper"/>
       <handler name="Authenticate"
type="java:org.apache.axis.handlers.SimpleAuthenticationHandler"/>

<service name="ActivationService" provider="java:RPC" style="wrapped"
use="literal">
               <parameter name="allowedMethods" value="*"/>
               <parameter name="scope" value="session"/>
               <parameter name="className"
                      
value="ecrm.soa.webservice.activation.ActivationImpl"/>
               <namespace>http://blstream.com/soa/activation/</namespace>;
               
               <beanMapping qname="ns:GetFreeNumbersOutDTO"
                       xmlns:ns="http://blstream.com/soa/activation/";
                         
languageSpecificType="java:ecrm.soa.webservice.activation.dto.GetFreeNumbersOutDTO"/>

               <beanMapping qname="ns:Status"
                       xmlns:ns="http://blstream.com/soa/activation/";
                          
languageSpecificType="java:ecrm.core.common.dto.Status"/>
                           
               <beanMapping qname="ns:MsisdnWithSim"
                       xmlns:ns="http://blstream.com/soa/activation/";
                         
languageSpecificType="java:ecrm.soa.webservice.activation.dto.MsisdnWithSim"/>
               
               <beanMapping qname="ns:Msisdn"
                       xmlns:ns="http://blstream.com/soa/activation/";
                          
languageSpecificType="java:ecrm.soa.webservice.activation.dto.Msisdn"/>
                       
       </service>

       <transport name="http">
               <requestFlow>
                       <handler type="URLMapper"/>
                       <handler
type="java:org.apache.axis.handlers.http.HTTPAuthHandler"/>
               </requestFlow>
               <parameter name="qs:list"
value="org.apache.axis.transport.http.QSListHandler"/>
               <parameter name="qs:wsdl"
value="org.apache.axis.transport.http.QSWSDLHandler"/>
               <parameter name="qs.list"
value="org.apache.axis.transport.http.QSListHandler"/>
               <parameter name="qs.method"
value="org.apache.axis.transport.http.QSMethodHandler"/>
               <parameter name="qs:method"
value="org.apache.axis.transport.http.QSMethodHandler"/>
               <parameter name="qs.wsdl"
value="org.apache.axis.transport.http.QSWSDLHandler"/>
       </transport>
       <transport name="local">
               <responseFlow>
                       <handler type="LocalResponder"/>
               </responseFlow>
       </transport>
</deployment>



WSDL:

<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions targetNamespace="http://blstream.com/soa/activation/";
xmlns:apachesoap="http://xml.apache.org/xml-soap";
xmlns:impl="http://blstream.com/soa/activation/";
xmlns:intf="http://blstream.com/soa/activation/";
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.4
Built on Apr 22, 2006 (06:55:48 PDT)-->
<wsdl:types>
 <schema elementFormDefault="qualified"
targetNamespace="http://blstream.com/soa/activation/";
xmlns="http://www.w3.org/2001/XMLSchema">;
  <element name="getFreeNumbers">
   <complexType>
    <sequence>
     <element name="iterationGuid" type="xsd:string"/>
     <element name="category" type="xsd:int"/>
     <element name="quantity" type="xsd:int"/>
    </sequence>
   </complexType>
  </element>
  <element name="getFreeNumbersResponse">
   <complexType>
    <sequence>
     <element name="getFreeNumbersReturn" type="impl:GetFreeNumbersOutDTO"/>
    </sequence>
   </complexType>
  </element>
  <complexType name="Msisdn">
   <sequence>
    <element name="msisdnNo" nillable="true" type="xsd:string"/>
   </sequence>
  </complexType>
  <complexType name="ArrayOfMsisdn">
   <sequence>
    <element maxOccurs="unbounded" minOccurs="0" name="item"
type="impl:Msisdn"/>
   </sequence>
  </complexType>
  <complexType name="Status">
   <sequence>
    <element name="code" type="xsd:int"/>
    <element name="text" nillable="true" type="xsd:string"/>
   </sequence>
  </complexType>
  <complexType name="GetFreeNumbersOutDTO">
   <sequence>
    <element name="result" nillable="true" type="impl:ArrayOfMsisdn"/>
    <element name="status" nillable="true" type="impl:Status"/>
   </sequence>
  </complexType>
  <element name="chooseNumbers">
   <complexType>
    <sequence>
     <element name="iterationGuid" type="xsd:string"/>
     <element maxOccurs="unbounded" name="numbers" type="impl:Msisdn"/>
    </sequence>
   </complexType>
  </element>
  <element name="chooseNumbersResponse">
   <complexType>
    <sequence>
     <element name="chooseNumbersReturn" type="impl:Status"/>
    </sequence>
   </complexType>
  </element>
  <element name="pairNumbers">
   <complexType>
    <sequence>
     <element name="iterationGuid" type="xsd:string"/>
     <element maxOccurs="unbounded" name="numbersAndSims"
type="impl:MsisdnWithSim"/>
    </sequence>
   </complexType>
  </element>
  <complexType name="MsisdnWithSim">
   <complexContent>
    <extension base="impl:Msisdn">
     <sequence>
      <element name="imei" nillable="true" type="xsd:string"/>
      <element name="sim" nillable="true" type="xsd:string"/>
     </sequence>
    </extension>
   </complexContent>
  </complexType>
  <element name="pairNumbersResponse">
   <complexType>
    <sequence>
     <element name="pairNumbersReturn" type="impl:Status"/>
    </sequence>
   </complexType>
  </element>
  <element name="releaseNumbers">
   <complexType>
    <sequence>
     <element name="iterationGuid" type="xsd:string"/>
    </sequence>
   </complexType>
  </element>
  <element name="releaseNumbersResponse">
   <complexType>
    <sequence>
     <element name="releaseNumbersReturn" type="impl:Status"/>
    </sequence>
   </complexType>
  </element>
 </schema>
</wsdl:types>

  <wsdl:message name="chooseNumbersRequest">

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

  </wsdl:message>

  <wsdl:message name="releaseNumbersResponse">

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

  </wsdl:message>

  <wsdl:message name="pairNumbersResponse">

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

  </wsdl:message>

  <wsdl:message name="chooseNumbersResponse">

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

  </wsdl:message>

  <wsdl:message name="releaseNumbersRequest">

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

  </wsdl:message>

  <wsdl:message name="getFreeNumbersRequest">

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

  </wsdl:message>

  <wsdl:message name="pairNumbersRequest">

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

  </wsdl:message>

  <wsdl:message name="getFreeNumbersResponse">

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

  </wsdl:message>

  <wsdl:portType name="ActivationImpl">

     <wsdl:operation name="getFreeNumbers">

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

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

     </wsdl:operation>

     <wsdl:operation name="chooseNumbers">

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

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

     </wsdl:operation>

     <wsdl:operation name="pairNumbers">

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

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

     </wsdl:operation>

     <wsdl:operation name="releaseNumbers">

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

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

     </wsdl:operation>

  </wsdl:portType>

  <wsdl:binding name="ActivationServiceSoapBinding"
type="impl:ActivationImpl">

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

     <wsdl:operation name="getFreeNumbers">

        <wsdlsoap:operation soapAction=""/>

        <wsdl:input name="getFreeNumbersRequest">

           <wsdlsoap:body use="literal"/>

        </wsdl:input>

        <wsdl:output name="getFreeNumbersResponse">

           <wsdlsoap:body use="literal"/>

        </wsdl:output>

     </wsdl:operation>

     <wsdl:operation name="chooseNumbers">

        <wsdlsoap:operation soapAction=""/>

        <wsdl:input name="chooseNumbersRequest">

           <wsdlsoap:body use="literal"/>

        </wsdl:input>

        <wsdl:output name="chooseNumbersResponse">

           <wsdlsoap:body use="literal"/>

        </wsdl:output>

     </wsdl:operation>

     <wsdl:operation name="pairNumbers">

        <wsdlsoap:operation soapAction=""/>

        <wsdl:input name="pairNumbersRequest">

           <wsdlsoap:body use="literal"/>

        </wsdl:input>

        <wsdl:output name="pairNumbersResponse">

           <wsdlsoap:body use="literal"/>

        </wsdl:output>

     </wsdl:operation>

     <wsdl:operation name="releaseNumbers">

        <wsdlsoap:operation soapAction=""/>

        <wsdl:input name="releaseNumbersRequest">

           <wsdlsoap:body use="literal"/>

        </wsdl:input>

        <wsdl:output name="releaseNumbersResponse">

           <wsdlsoap:body use="literal"/>

        </wsdl:output>

     </wsdl:operation>

  </wsdl:binding>

  <wsdl:service name="ActivationImplService">

     <wsdl:port binding="impl:ActivationServiceSoapBinding"
name="ActivationService">

        <wsdlsoap:address
location="http://localhost:8080/ecrm-soa/ActivationService"/>;

     </wsdl:port>

  </wsdl:service>

</wsdl:definitions>




I tested it in axis 1.2.1, 1.3 and 1.4 - always is the same wrong results in
webservicestudio of course.


Tnaks for help!


Best regards,
Szymono.

-- 
View this message in context: http://www.nabble.com/Problem-with-array-in-custom-type-in-.net-client-tf2603676.html#a7264664
Sent from the Axis - User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-user-help@ws.apache.org