I apologize for the formatting of my previous post. Repost in plain text below:
Hi,
I'm having trouble binding a typed array in a client of a web service.
Given the operation "getMyElems", the WSDL (pasted further down in
this message) specifies a return type of "ArrayOfMyElem". I am unable
to figure out how to bind this to an array of MyElem.
I am using Axis' WSDL2Java to generate a client from the WSDL and I
would like to be able to have something like:
TestService svc = new TestServiceStub(...);
MyElem[] myElems = svc.getMyElems();
However, when I try to generate a client using WSDL2Java, I get the
following exception:
Exception in thread "main"
org.apache.axis2.wsdl.codegen.CodeGenerationException:
java.lang.RuntimeException:
Cannot unwrap element {....service}getMyElemsResponse:
no abstract mapping definition found for type
{....service}ArrayOfMyElem (used by element
{....service}getMyElemsReturn)
at
org.apache.axis2.wsdl.codegen.CodeGenerationEngine.generate(CodeGenerationEngine.java:256)
I have attached the relevant WSDL, sample SOAP message and binding below.
Any help would be greatly appreciated.
-thom
Binding:
<?xml version="1.0" encoding="UTF-8"?>
<binding force-classes="true" xmlns:tns="....service" value-style="element">
<namespace uri="...service" default="elements"/>
<mapping abstract="true" type-name="tns:MyElem"
class="...service.MyElem" ordered="false">
<value name="id" field="id" usage="optional"/>
</mapping>
</binding>
The SOAP message that is returned on invoking getMyELems is:
<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope">
<soapenv:Body>
<ns:getMyElemsResponse xmlns:ns="http://....service">
<ns:getMyElemsReturn>
<ns:myElem>
<ns:id>1</ns:id>
</ns:myElem>
<ns:myElem>
<ns:id>2</ns:id>
</ns:myElem>
<ns:myElem>
<ns:id>3</ns:id>
</ns:myElem>
</ns:getMyElemsReturn>
</ns:getMyElemsResponse>
</soapenv:Body>
</soapenv:Envelope>
WSDL:
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions
name="TestService"
targetNamespace="http://com.servicetester.service"
xmlns:impl="http://com.servicetester.service"
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 -->
<wsdl:types>
<xsd:schema>
<xsd:element name="getMyElems">
<xsd:complexType/>
</xsd:element>
<xsd:element name="getMyElemsResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="getMyElemsReturn"
type="impl:ArrayOfMyElem"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:complexType name="MyElem">
<xsd:all>
<xsd:element name="id" nillable="false" type="xsd:int">
</xsd:element>
</xsd:all>
</xsd:complexType>
<xsd:complexType name="ArrayOfMyElem">
<xsd:sequence>
<xsd:element name="myElem" minOccurs="0"
maxOccurs="unbounded" form="qualified" type="impl:MyElem" />
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
</wsdl:types>
<!-- Messages -->
<wsdl:message name="getMyElems1Request">
<wsdl:part element="impl:getMyElems" name="parameters"/>
</wsdl:message>
<wsdl:message name="getMyElems1Response">
<wsdl:part element="impl:getMyElemsResponse" name="parameters"/>
</wsdl:message>
<!-- Port Type -->
<wsdl:portType name="TestServicePortType">
<wsdl:operation name="getMyElems">
<wsdl:input message="impl:getMyElems1Request"
name="getMyElems1Request"/>
<wsdl:output message="impl:getMyElems1Response"
name="getMyElems1Response"/>
</wsdl:operation>
</wsdl:portType>
<!-- WSDL Binding -->
<wsdl:binding name="TestServiceSoapBinding" type="impl:TestServicePortType">
<wsdlsoap:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="getMyElems">
<wsdlsoap:operation soapAction="getMyElems" style="document"/>
<wsdl:input name="getMyElems1Request">
<wsdlsoap:body use="literal"/>
</wsdl:input>
<wsdl:output name="getMyElems1Response">
<wsdlsoap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<!-- Service Definition -->
<wsdl:service name="TestService">
<wsdl:port binding="impl:TestServiceSoapBinding" name="TestService">
<wsdlsoap:address
location="http://localhost:8080/service-ws/services/TestService"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems? Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
jibx-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jibx-users