Please create a bug report...my suggestion for a work around is to get
a initial wsdl from  java2wsdl and tweak it to your hearts content
(and follow WS-I recommendations if you wan t to).

thanks,
dims

On 5/12/05, Ephemeris Lappis <[EMAIL PROTECTED]> wrote:
> Hello.
> 
> I know this subject has already been discussed many times. I've been
> searching for similar information, but it seems that all the reported
> problems or questions only apply to rpc style services with soap arrays...
> If it's not the case, sincerly sorry...
> 
> First, is it legal, according to WS-I, to return arrays of custom complex
> types in document/literal style services ?
> 
> If yes, it seems the java2wsdl fails when generating the mappings for the
> return element. The generated complex type is the unbounded element that
> represents the array, but the complex type itself is not described.
> 
> Here is my example...
> 
> A bean class named CharacterCount has two members : a string and an integer.
> 
> An operation named analyse takes a string argument and returns an array of
> CharacterCount :
> public CharacterCount[] analyse(String string).
> 
> The ant script generates the wsdl using the following target :
>         <target name="wsdl" depends="compile">
>                 <mkdir dir="./wsdl" />
>                 <property name="my.namespace" 
> value="http://ws.moon.net/j2me05"; />
>                 <java2wsdl output="./wsdl/j2me05ws.wsdl"
>                            className="net.moon.me.five.ws.StringTool"
>                            namespace="${my.namespace}"
>                            porttypename="StringUtility"
>                            serviceportname="StringUtilityPort"
>                            serviceelementname="J2ME05"
>                            style="document"
>                            use="literal"
>                            location="http://ws.moon.net/j2me05";>
>                         <classpath>
>                                 <pathelement 
> location="${my.services.compile-directory}" />
>                                 <path refid="my.axis.classpath" />
>                         </classpath>
>                         <complextype 
> classname="net.moon.me.five.ws.StringStructure"
>                                      namespace="${my.namespace}" />
>                         <complextype 
> classname="net.moon.me.five.ws.CharacterCount"
>                                      namespace="${my.namespace}" />
>                 </java2wsdl>
>         </target>
> Note that the CharacterCount mapping is included...
> 
> The resulting wsdl file, where the complex type detailled description is
> missing :
> 
> <?xml version="1.0" encoding="UTF-8"?>
> <wsdl:definitions targetNamespace="http://ws.moon.net/j2me05";
> xmlns:impl="http://ws.moon.net/j2me05";
> xmlns:intf="http://ws.moon.net/j2me05";
> xmlns:apachesoap="http://xml.apache.org/xml-soap";
> xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/";
> xmlns:xsd="http://www.w3.org/2001/XMLSchema";
> xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";>
> <!--WSDL created by Apache Axis version: 1.2RC2
> Built on Jan 28, 2005 (07:08:29 CET)-->
>  <wsdl:types>
>   <schema xmlns="http://www.w3.org/2001/XMLSchema";
> targetNamespace="http://ws.moon.net/j2me05"; elementFormDefault="qualified">
>    <element name="in0" type="xsd:string"/>
>    <element name="reverseReturn" type="xsd:string"/>
>    <complexType name="StringStructure">
>     <sequence>
>      <element name="count" type="xsd:int"/>
>      <element name="string" nillable="true" type="xsd:string"/>
>     </sequence>
>    </complexType>
>    <element name="in1" type="impl:StringStructure"/>
>    <element name="repeatReturn" type="xsd:string"/>
>    <element name="in2" type="xsd:string"/>
>    <complexType name="CharacterCount">
>     <sequence>
>      <element name="item" type="impl:CharacterCount" minOccurs="0"
> maxOccurs="unbounded"/>
>     </sequence>
>    </complexType>
>    <element name="analyseReturn" maxOccurs="unbounded"
> type="impl:CharacterCount"/>
>   </schema>
>  </wsdl:types>
> 
>    <wsdl:message name="analyseRequest">
> 
>       <wsdl:part name="in0" element="impl:in2"/>
> 
>    </wsdl:message>
> 
>    <wsdl:message name="reverseRequest">
> 
>       <wsdl:part name="in0" element="impl:in0"/>
> 
>    </wsdl:message>
> 
>    <wsdl:message name="repeatRequest">
> 
>       <wsdl:part name="in0" element="impl:in1"/>
> 
>    </wsdl:message>
> 
>    <wsdl:message name="repeatResponse">
> 
>       <wsdl:part name="repeatReturn" element="impl:repeatReturn"/>
> 
>    </wsdl:message>
> 
>    <wsdl:message name="analyseResponse">
> 
>       <wsdl:part name="analyseReturn" element="impl:analyseReturn"/>
> 
>    </wsdl:message>
> 
>    <wsdl:message name="reverseResponse">
> 
>       <wsdl:part name="reverseReturn" element="impl:reverseReturn"/>
> 
>    </wsdl:message>
> 
>    <wsdl:portType name="StringUtility">
> 
>       <wsdl:operation name="reverse" parameterOrder="in0">
> 
>          <wsdl:input name="reverseRequest" message="impl:reverseRequest"/>
> 
>          <wsdl:output name="reverseResponse"
> message="impl:reverseResponse"/>
> 
>       </wsdl:operation>
> 
>       <wsdl:operation name="repeat" parameterOrder="in0">
> 
>          <wsdl:input name="repeatRequest" message="impl:repeatRequest"/>
> 
>          <wsdl:output name="repeatResponse" message="impl:repeatResponse"/>
> 
>       </wsdl:operation>
> 
>       <wsdl:operation name="analyse" parameterOrder="in0">
> 
>          <wsdl:input name="analyseRequest" message="impl:analyseRequest"/>
> 
>          <wsdl:output name="analyseResponse"
> message="impl:analyseResponse"/>
> 
>       </wsdl:operation>
> 
>    </wsdl:portType>
> 
>    <wsdl:binding name="StringUtilityPortSoapBinding"
> type="impl:StringUtility">
> 
>       <wsdlsoap:binding style="document"
> transport="http://schemas.xmlsoap.org/soap/http"/>
> 
>       <wsdl:operation name="reverse">
> 
>          <wsdlsoap:operation soapAction=""/>
> 
>          <wsdl:input name="reverseRequest">
> 
>             <wsdlsoap:body use="literal"/>
> 
>          </wsdl:input>
> 
>          <wsdl:output name="reverseResponse">
> 
>             <wsdlsoap:body use="literal"/>
> 
>          </wsdl:output>
> 
>       </wsdl:operation>
> 
>       <wsdl:operation name="repeat">
> 
>          <wsdlsoap:operation soapAction=""/>
> 
>          <wsdl:input name="repeatRequest">
> 
>             <wsdlsoap:body use="literal"/>
> 
>          </wsdl:input>
> 
>          <wsdl:output name="repeatResponse">
> 
>             <wsdlsoap:body use="literal"/>
> 
>          </wsdl:output>
> 
>       </wsdl:operation>
> 
>       <wsdl:operation name="analyse">
> 
>          <wsdlsoap:operation soapAction=""/>
> 
>          <wsdl:input name="analyseRequest">
> 
>             <wsdlsoap:body use="literal"/>
> 
>          </wsdl:input>
> 
>          <wsdl:output name="analyseResponse">
> 
>             <wsdlsoap:body use="literal"/>
> 
>          </wsdl:output>
> 
>       </wsdl:operation>
> 
>    </wsdl:binding>
> 
>    <wsdl:service name="J2ME05">
> 
>       <wsdl:port name="StringUtilityPort"
> binding="impl:StringUtilityPortSoapBinding">
> 
>          <wsdlsoap:address location="http://ws.moon.net/j2me05"/>
> 
>       </wsdl:port>
> 
>    </wsdl:service>
> 
> </wsdl:definitions>
> 
> Did i miss something ?
> 
> Thanks for your help.
> 
> --
> Ephemeris Lappis
> 
> 


-- 
Davanum Srinivas - http://webservices.apache.org/~dims/

Reply via email to