Vamsavardhana Reddy wrote:
I have a service operation String[][] getGreetingsArray2(String[][] names).
I am using interface.java in my service element in the composite.  When the
service uses a webservice binding, I get the following wsdl using ?wsdl on
the endpoint url.

<wsdl:definitions ....>
    <wsdl:types>
        <xs:schema attributeFormDefault="qualified"
            elementFormDefault="qualified"
            targetNamespace="
http://jaxb.databindings.itest.sca.tuscany.apache.org/";
            xmlns:ns0="http://util.java/";
            xmlns:xs="http://www.w3.org/2001/XMLSchema";>
            <xs:element name="getGreetingsArray2">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element maxOccurs="unbounded" minOccurs="0"
                            name="arg0" nillable="true" type="xs:string" />
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
            <xs:element name="getGreetingsArray2Response">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element maxOccurs="unbounded" minOccurs="0"
                            name="return" nillable="true" type="xs:string"
/>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
            ...
        </xs:schema>
    </wsdl:types>
    ....
</wsdl:definitions>

Notice that the types correspond to String[] and not String[][].

I have added "@WebMethod public String[][] getGreetingsArray2(String[][]
names)" to MyServiceImpl class in sca\modules\interface-java-jaxws and used
jaxws-maven-plugin to generate the wsdl.

MyServiceImplService.wsdl has
  <types>
    <xsd:schema>
      <xsd:import namespace="
http://jaxws.java.interfacedef.sca.tuscany.apache.org/";
schemaLocation="MyServiceImplService_schema1.xsd"/>
    </xsd:schema>
    <xsd:schema>
      <xsd:import namespace="http://jaxb.dev.java.net/array";
schemaLocation="MyServiceImplService_schema2.xsd"/>
    </xsd:schema>
  </types>

MyServiceImplService_schema2.xsd has
  <xs:complexType name="stringArray" final="#all">
    <xs:sequence>
      <xs:element name="item" type="xs:string" minOccurs="0"
maxOccurs="unbounded" nillable="true"/>
    </xs:sequence>
  </xs:complexType>

MyServiceImplService_schema1.xsd has
  <xs:complexType name="getGreetingsArray2">
    <xs:sequence>
      <xs:element name="arg0" type="ns1:stringArray" nillable="true"
minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="getGreetingsArray2Response">
    <xs:sequence>
      <xs:element name="return" type="ns1:stringArray" nillable="true"
minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

In other words jaxws-maven-plugin seems to generate proper types for
String[][].

There seems to be a problem with the code that generates wsdl when ?wsdl is
used on the endpoint url.

++Vamsi

This support is not yet implemented in the new runtime Java2WSDL
mapping code.  Please open a JIRA for this and I will look at it.
Thanks.

  Simon

Reply via email to