Bonjour

Nous avons une application qui se connecte depuis quelques années en en tant que client à plusieurs WebServices.

Nous utilisons Axis 1.4 pour générer et utiliser le client. Nous ne souhaitons pas dans l'immédiat faire évoluer notre application avec un autre framework pour les WebServices; cela impliquerait beaucoup de correction de code et de test.

Récemment un des WebServices que nous interrogeons a évolué. J'arrive toujours à recompiler sans probème le client java avec un script ANT mais pour certaines fonctions de ce webservice nous avons cette erreur à l'exécution :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
org.xml.sax.SAXException: No deserializer for {http://www.w3.org/2001/XMLSchema}anyType
	at org.apache.axis.encoding.DeserializerImpl.onStartElement(DeserializerImpl.java:453)
	at org.apache.axis.encoding.DeserializerImpl.startElement(DeserializerImpl.java:393)
	at org.apache.axis.encoding.DeserializationContext.startElement(DeserializationContext.java:1048)
	at org.apache.axis.message.SAX2EventRecorder.replay(SAX2EventRecorder.java:165)
	at org.apache.axis.message.MessageElement.publishToHandler(MessageElement.java:1141)
	at org.apache.axis.message.RPCElement.deserialize(RPCElement.java:236)
	at org.apache.axis.message.RPCElement.getParams(RPCElement.java:384)
	at org.apache.axis.client.Call.invoke(Call.java:2467)
	at org.apache.axis.client.Call.invoke(Call.java:2366)
	at org.apache.axis.client.Call.invoke(Call.java:1812)
En faisant des tests avec SOAPUI, j'ai remarqué ( je ne sais pas si cela à un rapport) que les fonctions qui font cette erreur retournent des listes de valeurs.

J'ai regardé la différence du retour SOAP XML avant et après la modifications du WS et j'ai constaté que le format de retour des listes est différent.

AVANT:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
<SOAP-ENV:Envelope SOAP-ENV:........>
   <SOAP-ENV:Body>
      <ns4:getRefReviewResponse>
         <arrayOfReviewId xsi:type="SOAP-ENC:Array" SOAP-ENC:arrayType="xsd:int[31]" SOAP-ENC:offset="[0]">
            <item xsi:type="xsd:int">15221</item>
            <item xsi:type="xsd:int">24001</item>
            <item xsi:type="xsd:int">58914</item>
            <item xsi:type="xsd:int">59093</item>
            <item xsi:type="xsd:int">59302</item>
            <item xsi:type="xsd:int">59713</item>
....
APRES:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
<SOAP-ENV:Envelope xmlns:.........>
   <SOAP-ENV:Body>
      <ns1:getRefReviewResponse>
         <getRefReviewResult>
            <xsd:int>1</xsd:int>
            <xsd:int>2</xsd:int>
            <xsd:int>40576</xsd:int>
 
....
Si quelqu'un à une idée pour corriger mon erreur n'hésitez pas.

J'aimerais si possible ne pas toucher le code du client généré automatiquement par wsdl2java.

@+

Eric