Title: ComplexType Array

All,

I feel I am asking a repeated question so I apologize.

How do I return an array of my custom complex type? I always get a null pointer exception.

I have read that I need to write my own custom serializer/deserializer class.  Is this the case?  I can not find an example anywhere on the web.  Can anyone provide just the simplest of examples?

If this is not the case and I am just missing something small, below is the test code I have been using with the Deployment Descriptor.

Thanks for your help!!!!

//-------------C O M P L E X   T Y P E --------------------------------------------------------

//

public class TestArray

{

  public TestArray(){}

  public TestArray(int inInt1, int inInt2)

  {

    attr1 = inInt1;

    attr2 = inInt2;

  }

  protected int attr1;

  protected int attr2;

  public void setAttr1(int inInt){attr1 = inInt;}

  public void setAttr2(int inInt){attr2 = inInt;}

  public int getAttr1(){return attr1;}

  public int getAttr2(){return attr2;}

}

//---------------W E B    S E R V I C E------------------------------------------------------

//

import java.util.*;

public class WebS1

{

  public TestArray [] MyWS()

  {

    TestArray[] ta = new TestArray[10];

   

    for (int i =0; i < 10; i++)

    {

      ta[i] = new TestArray(i,i);

    }

   

    return ta;

  }

}

//------------  D D -------------------------------------------------------------------

//

<deployment xmlns="http://xml.apache.org/axis/wsdd/"

            xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">

  <service name="TimsWS" provider="java:RPC">

    <parameter name="className" value="WebS1"/>

    <parameter name="allowedMethods" value="*"/>

<beanMapping qname="myNS:TestArray"  xmlns:myNS="urn:BeanService" languageSpecificType="java:TestArray"/>

  </service>

</deployment>


//------------------------------  W S D L --------------------------------

//

<?xml version="1.0" encoding="UTF-8"?>

<wsdl:definitions targetNamespace="http://localhost:8080/axis/services/TimsWS" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:apachesoap="http://xml.apache.org/xml-soap" xmlns:impl="http://localhost:8080/axis/services/TimsWS" xmlns:intf="http://localhost:8080/axis/services/TimsWS" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns1="urn:BeanService" 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="urn:BeanService" xmlns="http://www.w3.org/2001/XMLSchema"><import namespace="http://schemas.xmlsoap.org/soap/encoding/"/><complexType name="TestArray"><sequence><element name="attr1" type="xsd:int"/><element name="attr2" type="xsd:int"/></sequence></complexType></schema><schema targetNamespace="http://localhost:8080/axis/services/TimsWS" xmlns="http://www.w3.org/2001/XMLSchema"><import namespace="http://schemas.xmlsoap.org/soap/encoding/"/><complexType name="ArrayOf_tns1_TestArray"><complexContent><restriction base="soapenc:Array"><attribute ref="soapenc:arrayType" wsdl:arrayType="tns1:TestArray[]"/></restriction></complexContent></complexType></schema></wsdl:types>

  <wsdl:message name="MyWSResponse">

    <wsdl:part name="MyWSReturn" type="impl:ArrayOf_tns1_TestArray"/>

  </wsdl:message>

  <wsdl:message name="MyWSRequest">

  </wsdl:message>

  <wsdl:portType name="WebS1">

    <wsdl:operation name="MyWS">

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

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

    </wsdl:operation>

  </wsdl:portType>

  <wsdl:binding name="TimsWSSoapBinding" type="impl:WebS1">

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

    <wsdl:operation name="MyWS">

      <wsdlsoap:operation soapAction=""/>

      <wsdl:input name="MyWSRequest">

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

      </wsdl:input>

      <wsdl:output name="MyWSResponse">

        <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://localhost:8080/axis/services/TimsWS" use="encoded"/>

      </wsdl:output>

    </wsdl:operation>

  </wsdl:binding>

  <wsdl:service name="WebS1Service">

    <wsdl:port binding="impl:TimsWSSoapBinding" name="TimsWS">

      <wsdlsoap:address location="http://localhost:8080/axis/services/TimsWS"/>

    </wsdl:port>

  </wsdl:service>

</wsdl:definitions>

Reply via email to