IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Services Web Java Discussion :

Problème de récupération message MTOM


Sujet :

Services Web Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 21
    Points : 21
    Points
    21
    Par défaut Problème de récupération message MTOM
    Bonjour,

    Comme le titre l'indique, j'ai un problème avec MTOM, en fait pour récupérer le message.
    Dans le code java, je demande à récupérer un objet Data qui contient une chaîne de caractère "contentType" et un objet MTOM "include" (de type Include définit par le w3c).
    "contentType" se récupère parfaitement, mais include ne contient rien (je ne récupère même un objet vide, c'est un objet null).
    Quelqu'un saurait-il d'où vient le problème ?

    Voici pour précision quelques morceaux de code.

    La fonction qui interroge le webservice :
    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
    /**
             * Permet de télécharger un fichier à partir du serveur.
             * @param session Uuid de la session qui tente d'accéder à la méthode
             * @param md5 Uuid du fichier à télécharger
             * @param result Résultat de la requête
             * @param data Fichier renvoyé
             */
    	@WebMethod(operationName = "get-file")
    	@RequestWrapper(localName = "get-file", targetNamespace = "form", className = "client.form.requestWrapper.GetFile")
    	@ResponseWrapper(localName = "data-response", targetNamespace = "form", className = "client.form.DataResponse")
    	public void getFile(
    		@WebParam(name = "session", targetNamespace = "")String session,
    		@WebParam(name = "md5", targetNamespace = "")String md5,
    		@WebParam(name = "result", targetNamespace = "", mode = WebParam.Mode.OUT) Holder<Result> result,
    		@WebParam(name = "data", targetNamespace = "", mode = WebParam.Mode.OUT) Holder<Data> data);
    La classe Data sans les accesseurs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    @XmlAccessorType(XmlAccessType.FIELD)
    @XmlType(name = "Data", propOrder = {
        "include"
    })
    public class Data{
     
        @XmlElement(name = "Include", namespace = "http://www.w3.org/2004/08/xop/include", required = true)
        protected Include include;
        @XmlAttribute(namespace = "http://www.w3.org/2004/11/xmlmime")
        protected String contentType;
    La classe Include sans les accesseurs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    @XmlAccessorType(XmlAccessType.FIELD)
    @XmlType(name = "Include", propOrder = {
        "any"
    })
    public class Include {
     
        @XmlAnyElement(lax = true)
        protected List<Object> any;
        @XmlAttribute(required = true)
        @XmlSchemaType(name = "anyURI")
        protected String href;
        @XmlAnyAttribute
        private Map<QName, String> otherAttributes = new HashMap<QName, String>();
    La requête SOAP renvoyée par le serveur (au cas où, pour précision, le code incompréhensible est le contenu du fichier que je dois récupérer) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?xml version="1.0" encoding="UTF-8"?>
    <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope" xmlns:SOAP-ENC="http://www.w3.org/2003/05/soap-encoding" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:generic="generic" xmlns:xop="http://www.w3.org/2004/08/xop/include" xmlns:xmime4="http://www.w3.org/2004/11/xmlmime" xmlns:form="form"><SOAP-ENV:Body><form:data-response><result><code>ok</code><details></details></result><data xmime4:contentType="image/jpeg"><xop:Include href="cid:id1"/></data></form:data-response></SOAP-ENV:Body></SOAP-ENV:Envelope>
    --==rJv43tDrvXJI24Q8S+mxSdebIJ8F6wmP2/THiV1HdIJOmuSxJSOj22aBwlEK==
    Content-Type: image/jpeg
    Content-Transfer-Encoding: binary
    Content-ID: <id1>
     
    �����JFIF��H�H�����C�		
    
     $.' ",#(7),01444'9=82<.342���C			
     
    2!!22222222222222222222222222222222222222222222222222�����"��������������	
    �������}�!1AQa"q2���#B��R��$3br�	
    %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
    Merci d'avance

  2. #2
    oca
    oca est déconnecté
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    354
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2004
    Messages : 354
    Points : 421
    Points
    421
    Par défaut
    Hello,

    je ne sais pas trop pourquoi tu obtiens un null, mais j'ai moi aussi eu quelques soucis avec MTOM...

    les miens était du à la version de jax-ws...
    la version "JAX-WS RI 2.1.1 in JDK 6" ne me donne pas du tout le même message SOAP que la version "JAX-WS RI 2.1.2-b05-RC1".

    les deux fonctionnent, mais avec "JAX-WS RI 2.1.1 in JDK 6", mon contenu est encodé dans l'enveloppe soap (donc c'est pas du mtom ) alors qu'avec
    "JAX-WS RI 2.1.2-b05-RC1", tout ce passe très bien.

    J'ai de temps en temps un "null" comme résultat lorsque je change mon service et que j'oublie de regénérer mon client avec la commande wsimport...

    A+

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 21
    Points : 21
    Points
    21
    Par défaut
    Salut, et merci pour ta réponse.

    Le problème a été résolu. En fait, dans la génération des classes à partir du wsdl du serveur, wsimport a créé des classes Data et Include (de xop.include) pour que je les utilise.
    Maintenant, j'utilise directement DataHandler à la place du Data généré, et tout fonctionne impeccablement.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [TIBSQL] Problème de récupération d'un champs
    Par TitiFr dans le forum Bases de données
    Réponses: 6
    Dernier message: 07/08/2005, 13h33
  2. [hibernate]Problème de récupération d'objet...
    Par roxx62 dans le forum Hibernate
    Réponses: 1
    Dernier message: 07/07/2005, 11h36
  3. Réponses: 8
    Dernier message: 12/05/2005, 08h16
  4. Nouveau problème de récupération de valeurs.
    Par pmboutteau dans le forum ASP
    Réponses: 4
    Dernier message: 09/03/2005, 10h48
  5. Problème de récupération de texte de formulaire
    Par bigourson dans le forum Langage
    Réponses: 4
    Dernier message: 15/09/2004, 16h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo