Bonjour à tous,

j'utilise axis1.4 et sa tâche ant Java2WSDL afin de générer le WSDL représentant mes objets et services.
Mon problème se situe au niveau de la création du complexType dans le WSDL :
  • Si l'attribut est un objet perso, ça marche
  • Si l'attribut est une liste d'objets persos, ça ne marche pas


Plus concrètement, voici la définition de mon objet Java à partir duquel je veux que la tâche java2WSDL crée le WSDL :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
package fr.test.src.objet;
 
public class MonObjet implements java.io.Serializable {
    private ObjetToto objetToto;
    private List<ObjetTiti> objetsTiti;
 
    public MonObjet(){}
 
    /*Les getters et setters*/
    ...
}
J'exécute la tâche ant et le WSDL est créée (j'ai enlevé la définition de l'exception et du service, ce n'est pas le soucis ici). Le résultat est le suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
 
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions targetNamespace="http://service.ws.test.fr" xmlns:apachesoap="http://xml.apache.org/xml-soap" xmlns:impl="http://service.ws.test.fr" xmlns:intf="http://service.ws.test.fr" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns1="http://objet.ws.test.fr" xmlns:tns3="http://exception.ws.test.fr" 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="http://service.ws.test.fr" xmlns="http://www.w3.org/2001/XMLSchema">
   <import namespace="http://exception.ws.test.fr"/>
   <import namespace="http://xml.apache.org/xml-soap"/>
   <import namespace="http://objet.ws.test.fr"/>
   <import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>
   <complexType name="ArrayOf_xsd_anyType">
    <complexContent>
     <restriction base="soapenc:Array">
      <attribute ref="soapenc:arrayType" wsdl:arrayType="xsd:anyType[]"/>
     </restriction>
    </complexContent>
   </complexType>
  </schema>
  <schema targetNamespace="http://xml.apache.org/xml-soap" xmlns="http://www.w3.org/2001/XMLSchema">
   <import namespace="http://exception.ws.test.fr"/>
   <import namespace="http://service.ws.test.fr"/>
   <import namespace="http://objet.ws.test.fr"/>
   <import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>
   <complexType name="Vector">
    <sequence>
     <element maxOccurs="unbounded" minOccurs="0" name="item" type="xsd:anyType"/>
    </sequence>
   </complexType>
  </schema>
  <schema targetNamespace="http://objet.ws.test.fr" xmlns="http://www.w3.org/2001/XMLSchema">
   <import namespace="http://exception.ws.test.fr"/>
   <import namespace="http://xml.apache.org/xml-soap"/>
   <import namespace="http://service.ws.test.fr"/>
   <import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>
   <complexType name="MonObjet">
    <sequence>
     <element name="objetsTiti" nillable="true" type="impl:ArrayOf_xsd_anyType"/>
     <element name="objetToto" nillable="true" type="tns1:ObjetToto"/>
    </sequence>
   </complexType>
   <complexType name="ObjetToto">
    <sequence>
      <element name="attribut" nillable="true" type="xsd:string"/>
    </sequence>
   </complexType>
Ma question est donc la suivante : pourquoi je me retrouve avec un tableau d'objets typé "ArrayOf_xsd_anyType" ? Plus précisément :pourquoi java2WSDL ne crée pas un complexType "ArrayOf_tnsx_objetTiti" qui serait d'arrayType :tnsx:ObjetTiti[] ?

La définition de la tâche ant est la suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<target name="Java2Wsdl" depends="init" description="generate .wsdl from files">
    <echo message="Le projet doit avoir les fichiers compilés dans ${bin.dir} pour générer le WSDL"/>
    <taskdef name="java2wsdl" classname="org.apache.axis.tools.ant.wsdl.Java2WsdlAntTask" onerror="report" loaderref="axis">
         <classpath refid="compile.classpath" />
    </taskdef>
 
    <java2wsdl classname="${source.package}.${service.name}.${webservice.name}" use="encoded" style="rpc" namespace="http://${service.name}.${target.namespace}" location="http://localhost:9080/TestWS/services/${webservice.name}" output="${webservice.name}.wsdl">
        <mapping namespace="http://${objet.name}.${target.namespace}" package="${source.package}.${objet.name}"/>
        <mapping namespace="http://${exception.name}.${target.namespace}" package="${source.package}.${exception.name}"/>
	<mapping namespace="http://${service.name}.${target.namespace}" package="${source.package}.${service.name}"/>
	<classpath>
    	    <pathelement location="${bin.dir}" />
	</classpath>
    </java2wsdl>
</target>
Ai-je oublié quelque chose dans la tâche ant ?
Faut-il ajouter l'implémentation de certaines méthodes sur les List dans la classe java de définition de l'entité ?
Le problème est ailleurs ?

Merci d'avance pour vos réponses éclairées

Note : je peux effectivement modifier le WSDL à la main pour obtenir ce que je souhaite mais j'aimerais obtenir le même résultat en utilisant uniquement axis