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 :

List et Array dans un web service JAX-WS


Sujet :

Services Web Java

  1. #1
    Membre régulier
    Inscrit en
    Septembre 2010
    Messages
    121
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 121
    Points : 74
    Points
    74
    Par défaut List et Array dans un web service JAX-WS
    Bonjour messieurs,

    Je construit actuellement un petit web service de gestion de ma base de donnée.

    Seulement une chose me pose problème je ne peux renvoyer des array d'objet mais pas de list.

    Mon objet.
    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
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
     
     
    public class Pronostique implements Serializable{
     
        private int id;    
        private String prenom;
        private String nom;
        private int opt1;
        private int opt2;
        private int opt3;
        private String societe;
        private int participation;
     
        public Pronostique() {
        }
     
        public Pronostique(int id, String prenom, String nom, int opt1, int opt2, int opt3, String societe, int participation) {
            this.id = id;       
            this.prenom = prenom;
            this.nom = nom;
            this.opt1 = opt1;
            this.opt2 = opt2;
            this.opt3 = opt3;
            this.societe = societe;
            this.participation = participation;
        }
     
        public Pronostique(String prenom, String nom, int opt1, int opt2, int opt3, String societe, int participation) {      
            this.prenom = prenom;
            this.nom = nom;
            this.opt1 = opt1;
            this.opt2 = opt2;
            this.opt3 = opt3;
            this.societe = societe;
            this.participation = participation;
        }
     
        public int getId() {
            return id;
        }
     
        public void setId(int id) {
            this.id = id;
        }
     
        public String getPrenom() {
            return prenom;
        }
     
        public void setPrenom(String prenom) {
            this.prenom = prenom;
        }
     
        public String getNom() {
            return nom;
        }
     
        public void setNom(String nom) {
            this.nom = nom;
        }
     
        public int getOpt1() {
            return opt1;
        }
     
        public void setOpt1(int opt1) {
            this.opt1 = opt1;
        }
     
        public int getOpt2() {
            return opt2;
        }
     
        public void setOpt2(int opt2) {
            this.opt2 = opt2;
        }
     
        public int getOpt3() {
            return opt3;
        }
     
        public void setOpt3(int opt3) {
            this.opt3 = opt3;
        }
     
        public String getSociete() {
            return societe;
        }
     
        public void setSociete(String societe) {
            this.societe = societe;
        }
     
        public int getParticipation() {
            return participation;
        }
     
        public void setParticipation(int participation) {
            this.participation = participation;
        }
    }
    Ma méthode dans le wsdl :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     @WebMethod(operationName = "getPronostique", action = "getPronostique")
        public Pronostique[] getPronostique() {
            PronostiqueDao pronostiqueDao = (PronostiqueDao) ac.getBean("pronostiqueDao");
            ArrayList<Pronostique> pronostiques = pronostiqueDao.getPronostiqueById();
     
            return pronostiques.toArray(new Pronostique[pronostiques.size()]);
        }
    La pas de problème on me renvoie bien les différents utilisateur de ma table pronostique.

    Mais par contre avec ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     @WebMethod(operationName = "testlist", action = "testlist")
        public ArraylistPronostique testlist() {
            PronostiqueDao pronostiqueDao = (PronostiqueDao) ac.getBean("pronostiqueDao");
            ArrayList<Pronostique> pronostiques = pronostiqueDao.getPronostiqueById();
            return pronostiques.toArray(new Pronostique[pronostiques.size()]);
        }
    La réponse du web service avec soapui

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
       <S:Body>
          <ns2:testlistResponse xmlns:ns2="http://ws.societe.com/">
             <return/>
          </ns2:testlistResponse>
       </S:Body>
    </S:Envelope>

    Ma question est simple on ne peut pas renvoyer de list avec un web service, on est obliger de renvoyé un tableau ? donc pas de renvoie de MAP possible ?

    J'ai regarder les type XML Schema Part 2: Datatypes Second Edition
    Pour voir quel types pouvaient être renvoyer avec les web service.
    ici


    Et la a ma grande surprise :

    [Definition:] Atomic datatypes are those having values which are regarded by this specification as being indivisible.
    [Definition:] List datatypes are those having values each of which consists of a finite-length (possibly empty) sequence of values of an ·atomic· datatype.
    [Definition:] Union datatypes are those whose ·value space·s and ·lexical space·s are the union of the ·value space·s and ·lexical space·s of one or more other datatypes.


    Donc si quelqu'un peut m'éclairer sur sa je lui en serrais reconnaissant car je n’avoue plus comprendre.

  2. #2
    Membre averti Avatar de rockley
    Homme Profil pro
    Inscrit en
    Décembre 2010
    Messages
    404
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 404
    Points : 346
    Points
    346
    Par défaut
    As-tu essayé le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
        public ArraylistPronostique testlist() {
            PronostiqueDao pronostiqueDao = (PronostiqueDao) ac.getBean("pronostiqueDao");
            ArrayList<Pronostique> pronostiques = pronostiqueDao.getPronostiqueById();
            return pronostiques.toArray(new Pronostique[pronostiques.size()]);
        }
    à part pour voir ce que ça peux te retourner ?

  3. #3
    Membre régulier
    Inscrit en
    Septembre 2010
    Messages
    121
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 121
    Points : 74
    Points
    74
    Par défaut
    Merci pour votre réponse.

    Pardon j'ai fait une faute :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
        @WebMethod(operationName = "testlist", action = "testlist")
        public ArrayList<Pronostique> testlist() throws Exception {
            PronostiqueDao pronostiqueDao = (PronostiqueDao) ac.getBean("pronostiqueDao");
            ArrayList<Pronostique> pronostiques = pronostiqueDao.getPronostiqueById();       
            return pronostiques;
        }
    Et le code retourné par soapUI
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
       <S:Body>
          <ns2:testlistResponse xmlns:ns2="http://ws.societe.com/">
             <return/>
          </ns2:testlistResponse>
       </S:Body>
    </S:Envelope>
    Et pourtant mon arraylist n'est pas vide.

  4. #4
    Membre averti Avatar de rockley
    Homme Profil pro
    Inscrit en
    Décembre 2010
    Messages
    404
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 404
    Points : 346
    Points
    346
    Par défaut
    Donc si ton code fonctionne à part, je ne voix plus que les annotations.

    Je ne suis plus très sûr mais il n'y a pas une question de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    @XmlRootElement
    @XmlAccessorType
    @XmlType
    Je n'ai jamais fait passé d'array avec Jax-Ws mais il me semble que pour les types complexes il y a des annotations en plus.

Discussions similaires

  1. Réponses: 2
    Dernier message: 04/11/2012, 10h36
  2. [JAX-WS] Comment sécuriser des Web Services JAX-WS?
    Par solawe dans le forum Services Web
    Réponses: 6
    Dernier message: 23/05/2008, 10h07
  3. pooling de connexions sur web service jax-ws
    Par zais_ethael dans le forum Services Web
    Réponses: 8
    Dernier message: 09/04/2008, 13h06
  4. probleme dans mon web service
    Par am@123 dans le forum Services Web
    Réponses: 2
    Dernier message: 06/05/2007, 19h31
  5. [C#2.0] Comment rendre obligatoire un element dans un Web Service
    Par cosmos38240 dans le forum Services Web
    Réponses: 1
    Dernier message: 02/03/2007, 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