Hi Arnold ;
Axis2 java2wsld is based on JDK 1.4 not JDK 1.5, so it does not identify
the object type of the list and it will treat the list as just
java.util.List . That is why you are getting xs:anyType for the return
value. To overcome the issue , the only workaround is to return Object
array instead of list.
Thanks
> Hi !
>
> I have to write some webservices (client and server) and want to use
> Axis2 so I wrote some test classes:
>
> Data classes:
> public class Data1
> {
> List<Data2> array = new ArrayList<Data2>();
>
> public List<Data2> getArray() {
> return array;
> }
>
> public void setArray(List<Data2> array) {
> this.array = array;
> }
>
>
> }
> public class Data2
> {
> String a,b,c;
>
> public String getA() {
> return a;
> }
>
> public void setA(String a) {
> this.a = a;
> }
>
> public String getB() {
> return b;
> }
>
> public void setB(String b) {
> this.b = b;
> }
>
> public String getC() {
> return c;
> }
>
> public void setC(String c) {
> this.c = c;
> }
> }
>
>
> WebService:
> package com.spirit.axis.webservice;
>
> import java.util.Iterator;
> import java.util.List;
>
> import com.spirit.axis.data.Data1;
> import com.spirit.axis.data.Data2;
>
> public class Webservice
> {
> public List<Data2> getData(Data1 data)
> {
> List<Data2> array = data.getArray();
> for(Iterator<Data2> it = array.iterator();it.hasNext();)
> {
> Data2 data2 = it.next();
> System.out.println("A:" + data2.getA() + " B:" +
> data2.getB() + " C:" + data2.getC());
> }
> return array;
> }
> }
>
>
> Generated WSDL with java2wsdl:
> <wsdl:definitions xmlns:axis2="http://webservice.axis.spirit.com
> <http://webservice.axis.spirit.com/>"
> xmlns:soap12=" http://schemas.xmlsoap.org/wsdl/soap12/
> <http://schemas.xmlsoap.org/wsdl/soap12/>"
> xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
> xmlns:mime=" http://schemas.xmlsoap.org/wsdl/mime/
> <http://schemas.xmlsoap.org/wsdl/mime/>"
> xmlns:ns="http://webservice.axis.spirit.com/xsd"
> xmlns:soap=" http://schemas.xmlsoap.org/wsdl/soap/
> <http://schemas.xmlsoap.org/wsdl/soap/>"
> xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
> targetNamespace=" http://webservice.axis.spirit.com
> <http://webservice.axis.spirit.com/> ">
> <wsdl:types>
> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema
> <http://www.w3.org/2001/XMLSchema>"
> xmlns:ns0=" http://data.axis.spirit.com/xsd"
> attributeFormDefault="qualified
> "
> elementFormDefault="qualified" targetNamespace="
> http://webservice.axis.spirit.com/xsd
> <http://webservice.axis.spirit.com/xsd>">
> <xs:element name="getData">
> <xs:complexType>
> <xs:sequence>
> <xs:element name="data" nillable="true"
> type="ns0:Data1"/>
> </xs:sequence>
> </xs:complexType>
> </xs:element>
> <xs:element name="getDataResponse">
> <xs:complexType>
> <xs:sequence>
> <xs:element name="return" nillable="true"
> type="xs:anyType"/>
> </xs:sequence>
> </xs:complexType>
> </xs:element>
> </xs:schema>
> <xs:schema xmlns:xs=" http://www.w3.org/2001/XMLSchema"
> xmlns:ax21=" http://data.axis.spirit.com/xsd"
> attributeFormDefault="qualified"
> elementFormDefault="qualified" targetNamespace="
> http://data.axis.spirit.com/xsd">
> <xs:element name="Data1" type="ax21:Data1"/>
> <xs:complexType name="Data1">
> <xs:sequence>
> <xs:element name="array" type="xs:anyType"/>
> </xs:sequence>
> </xs:complexType>
> </xs:schema>
> </wsdl:types>
> <wsdl:message name="getDataMessage">
> <wsdl:part name="part1" element="ns:getData"/>
> </wsdl:message>
> <wsdl:message name="getDataResponseMessage">
> <wsdl:part name="part1" element="ns:getDataResponse"/>
> </wsdl:message>
> <wsdl:portType name="WebservicePortType">
> <wsdl:operation name="getData">
> <wsdl:input message="axis2:getDataMessage"/>
> <wsdl:output message="axis2:getDataResponseMessage"/>
> </wsdl:operation>
> </wsdl:portType>
> <wsdl:binding name="WebserviceSOAP11Binding"
> type="axis2:WebservicePortType">
> <soap:binding transport=" http://schemas.xmlsoap.org/soap/http
> <http://schemas.xmlsoap.org/soap/http>" style="document"/>
> <wsdl:operation name="getData">
> <soap:operation soapAction="urn:getData" style="document"/>
> <wsdl:input>
> <soap:body use="literal"
> namespace="http://webservice.axis.spirit.com
> <http://webservice.axis.spirit.com/>"/>
> </wsdl:input>
> <wsdl:output>
> <soap:body use="literal"
> namespace="http://webservice.axis.spirit.com
> <http://webservice.axis.spirit.com/>"/>
> </wsdl:output>
> </wsdl:operation>
> </wsdl:binding>
> <wsdl:binding name="WebserviceSOAP12Binding"
> type="axis2:WebservicePortType">
> <soap12:binding transport="
> http://schemas.xmlsoap.org/soap/http" style="document"/>
> <wsdl:operation name="getData">
> <soap12:operation soapAction="urn:getData" style="document"/>
> <wsdl:input>
> <soap12:body use="literal" namespace="
> http://webservice.axis.spirit.com <http://webservice.axis.spirit.com/>"/>
> </wsdl:input>
> <wsdl:output>
> <soap12:body use="literal" namespace="
> http://webservice.axis.spirit.com <http://webservice.axis.spirit.com/>"/>
> </wsdl:output>
> </wsdl:operation>
> </wsdl:binding>
> <wsdl:service name="Webservice">
> <wsdl:port name="WebserviceSOAP11port"
> binding="axis2:WebserviceSOAP11Binding">
> <soap:address
> location="http://localhost:8080/axis2/services/Webservice
> <http://localhost:8080/axis2/services/Webservice>"/>
> </wsdl:port>
> <wsdl:port name="WebserviceSOAP12port"
> binding="axis2:WebserviceSOAP12Binding">
> <soap12:address
> location="http://localhost:8080/axis2/services/Webservice
> <http://localhost:8080/axis2/services/Webservice>"/>
> </wsdl:port>
> </wsdl:service>
> </wsdl:definitions>
>
>
> The problem is that axis2 uses anyType for the Array and for the
> return type of my webservice.
> Can I just change it to ax21:Data2 or do I have to modify my sourcecode.
> The wsdl was generate via commandline:
>
> ./java2wsdl.sh -cp . -cn com.spirit.axis.webservice.Webservice -of
> Test.wsdl
>
> anyone can help me or where is the right place to post questions about
> axis2 ?
>
> yours
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]