Pb d'incompatibilité de version d'un client pour un web service en SOAP

komix21 Messages postés 6 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 27 février 2009 - 24 juil. 2008 à 14:35
komix21 Messages postés 6 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 27 février 2009 - 31 juil. 2008 à 10:12
Bonjour,
                je suis en train de créer un client (en java) pour dialoguer avec un web service qui se trouve en local sur ma machine. Je précise que c'est une application indépendante qui ne tourne pas sous tomcat. Je génère les classes pour créer un application cliente à partir du fichier WSDL à l'aide du plugin SoapUI sous Eclipse. Je crée une application cliente à l'aide de ces classes générées. Mais lorsque j'execute cette application , j'obtiens l'erreur suivant:

AxisFault
 faultCode: {http://schemas.xmlsoap.org/soap/envelope/}VersionMismatch
 faultSubcode:
 faultString: Version Mismatch
 faultActor:
 faultNode:
 faultDetail:
    {http://xml.apache.org/axis/}stackTrace:Version Mismatch
    at org.apache.axis.message.EnvelopeBuilder.startElement(EnvelopeBuilder.java:103)
    at org.apache.axis.encoding.DeserializationContext.startElement(DeserializationContext.java:1048)
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl$NSContentDriver.scanRootElementHook(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source)
    at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
    at javax.xml.parsers.SAXParser.parse(Unknown Source)
    at org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227)
    at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696)
    at org.apache.axis.Message.getSOAPEnvelope(Message.java:435)
    at org.apache.axis.handlers.soap.MustUnderstandChecker.invoke(MustUnderstandChecker.java:62)
    at org.apache.axis.client.AxisClient.invoke(AxisClient.java:206)
    at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
    at org.apache.axis.client.Call.invoke(Call.java:2767)
    at org.apache.axis.client.Call.invoke(Call.java:2443)
    at org.apache.axis.client.Call.invoke(Call.java:2366)
    at org.apache.axis.client.Call.invoke(Call.java:1812)

Version Mismatch
    at org.apache.axis.message.EnvelopeBuilder.startElement(EnvelopeBuilder.java:103)
    at org.apache.axis.encoding.DeserializationContext.startElement(DeserializationContext.java:1048)
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl$NSContentDriver.scanRootElementHook(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source)
    at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
    at javax.xml.parsers.SAXParser.parse(Unknown Source)
    at org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227)
    at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696)
    at org.apache.axis.Message.getSOAPEnvelope(Message.java:435)
    at org.apache.axis.handlers.soap.MustUnderstandChecker.invoke(MustUnderstandChecker.java:62)
    at org.apache.axis.client.AxisClient.invoke(AxisClient.java:206)
    at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
    at org.apache.axis.client.Call.invoke(Call.java:2767)
    at org.apache.axis.client.Call.invoke(Call.java:2443)
    at org.apache.axis.client.Call.invoke(Call.java:2366)
    at org.apache.axis.client.Call.invoke(Call.java:1812)
   
J'ai essayer de modifier la valeur de l'attribut transport de la balise binding du fichier WSDL, mais j'obtiens toujours le même message d'erreur.
Cela fait presqu'une semaine que je suis dessus, besoin d'aide, merci .

4 réponses

cs_AlexN Messages postés 694 Date d'inscription lundi 5 décembre 2005 Statut Membre Dernière intervention 8 janvier 2014 19
25 juil. 2008 à 10:44
Salut,
axis possède sa propre fonctionnalité pour générer les squelettes client et serveur d'un service de type SOAP
à partir du wsdl : org.apache.axis.wsdl.WSDL2Java. Je ne connait pas SoapUI, mais peut être que le fait d'utiliser cet outil ne crée pas des sources pour la bonne version d'axis que tu utilises.
0
komix21 Messages postés 6 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 27 février 2009
25 juil. 2008 à 12:03
Salut,
merci d'avoir répondu, mais le problème de version concerne SOAP (je m'étais pas assez clair).
Je pense que l'un d'entre eux (client ou serveur) envoi un message en SOAP 1.1 et l'autre en SOAP 1.2.
C'est pourquoi j'ai essayé de modifier la valeur de l'attribut transport dans la balise binding du fichier WSDL, c'est elle qui précise qu'elle version de SOAP est utilisée.
D'après les concepteurs du service web, il peut communiquer en SOAP 1.2. Et lorsque je le précise dans la balise binding du fichier WSDL, j'ai toujours le message d'erreur.
 
0
cs_AlexN Messages postés 694 Date d'inscription lundi 5 décembre 2005 Statut Membre Dernière intervention 8 janvier 2014 19
25 juil. 2008 à 12:19
Hum,

Changer juste un chiffre à l'arrache dans un coin de fichier ne résoudra probablement pas les problèmes de versions.
Entre la version 1.1 et 1.2 certains éléments du protocole ont radicalement changé (format des échanges, format des messages, format des réponses, etc...).

Je cite cette source :
SOAP 1.2 comporte un certain nombre de changements de syntaxe et
fournit des sémantiques clarifiées en plus de celles décrites dans SOAP
1.1. Le document Primer de SOAP 1.2 répertorie et décrit ces
changements de syntaxe.

Il faut se servir des outils appropriés à la bonne version du protocole que tu souhaites utiliser. Si tu utilise un client 1.1 avec un serveur 1.2 ou inversement, c'est peut être possible, mais certainement pas en remplaçant un chiffre par un autre. La librairie Axis contient tout les outils pour une même version du protocole. Je pense qu'il faut regarder par là.
0
komix21 Messages postés 6 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 27 février 2009
31 juil. 2008 à 10:12
Salut,
          j'ai regardé Axis et j'ai rajouté son dossier dans le dossier plugin d'Eclipse. Mais lorsque j'essaie de générer les classes à partir du fichier WSDL, je reçois ce message d'erreur:
WSDL2Java function not yet implemented
Je n'ai encore rien trouvé sur internet qui me permettrait de résoudre ce problème.
Merci pour ton aide.
0
Rejoignez-nous