Array en paramètres de webservice
Bonjour.
Il me semble que la gestion des tableaux d'objets soit assez compliquée ...
Prenons le cas de la méthode
Code:
1 2 3
| public String exportationToWS(ExportationHeader header, ExportationRow[] export ){
...
} |
Le fichier wsdl généré contient bien
Code:
1 2 3 4 5 6 7 8
| <xs:element name="exportationToWS">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="header" nillable="true" type="ax225:ExportationHeader"/>
<xs:element maxOccurs="unbounded" minOccurs="0" name="export" nillable="true" type="ax225:ExportationRow"/>
</xs:sequence>
</xs:complexType>
</xs:element> |
Cependant, l'utilisation via wsdl2java (génération depuis Eclipse) me donne l'erreur suivante sur l'appel à client.
Code:
1 2 3 4
| Exception in thread "main" java.lang.InstantiationError: org.apache.axis2.databinding.ADBDataSource
at P$ExportationToWS.getOMElement(PStub.java:5403)
at PStub.toEnvelope(PStub.java:6527)
at PStub.exportationToWS(PStub.java:733) |
De plus, la création à la main fait que
Code:
1 2 3 4 5 6 7 8 9
| OMElement uploadFile = fac.createOMElement("exportationToWS", omNs);
OMElement nameEleTab = fac.createOMElement("Array", omNs);
nameEleTab.setLocalName("export");
nameEleTab.setText("export");
OMElement nameEle = fac.createOMElement("ExportationRow", omNs);
OMElement badge = fac.createOMElement("badge", omNs);
badge.setText("B");
nameEle.addChild(badge);
nameEleTab.addChild(nameEle); |
Avec uploadFile.addChild(nameEleTab); ou uploadFile.addChild(nameEle); la tableau contient toujours un seul élement ExportationRow avec aucune valeur.
Sans ce addChild, le tableau est vide.
Alors que pour la structure ExportationHeader, cela fonctionne.
... je suis un peu perdu.
Merci.