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 :

[jax ws] consommer un objet complex d'une methode web service


Sujet :

Services Web Java

  1. #1
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 65
    Points : 47
    Points
    47
    Par défaut [jax ws] consommer un objet complex d'une methode web service
    Bonjour
    je travaille avec jax-ws et pour cela je dois deployer des methodes ayant des attributs complexes: la solution est de travailler avec des java bean.
    et ca marche 5/5 .
    le problème se pose dans le cas ou le bean lui même a des attributs complexe (liste, tableau ).
    concrètement j'ai une méthode dans la quelle je dois entrer comme attributs une liste ( ou un tableau) d'un objet bean et qui de me retourner (normalement une liste d'objet etudiant)

    les bous de codes :
    classe etudiant.java (bean)
    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
    public class Etudiant{
     
    	private String nom = null;
    	private String prenom = null;
    	private int age = null;
     
    	public Etudiant(){}
     
            public Etudiant(String nom, String prenom, int age){
            this.nom = nom;
            this.prenom = prenom;
            this.int = int;
            }
     
     
    	public String getNom() {
    		return nom;
    	}
     
    	public void setNom(String nom) {
    		this.nom= nom;
    	}
     
            public String getPrenom() {
    		return prenom;
    	}
     
    	public void setPrenom(String prenom) {
    		this.prenom= prenom;
    	}
            public int getAge() {
    		return age;
    	}
     
    	public void setAge(int age) {
    		this.age= age;
    	}
    classe ListEtudiant:

    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
     
    public class ListEtudiant{
     
    	private Etudiant[] listEtudiant= null;
     
    	public ListEtudiant(){}
     
            public ListEtudiant(Etudiant[] listEtudiant){
            this.listEtudiant = listEtudiant
            }
     
     
    	public Etudiant[] getListEtudiant() {
    		return listEtudiant;
    	}
     
    	public void setListEtudiant(Etudiant[] listEtudiant) {
    		this.listEtudiant= listEtudiant;
    	}
    la methode dans le web service est : public ListResEtud getListEtud (ListEtudiant toto) ;

    le probleme est quand je génére le wsdl et les classes je n'obtient que les getters et le constructeur par defaut de la classe ListEtudiant (parce que à ce que je pense ces attributs sont complexes "Etudiant[]")

    est ce que quelqu'un a une idée sur cela
    votre aide me sera tres précieuse

  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
    J'ai essayé tes classes et je n'ai pas eu de problèmes, si ce n'est
    quelques petits problèmes de compilation comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    private int age = null;
    J'ai aussi du ajouter les annotations, mais après, j'ai pu appeler
    les méthodes setListEtudiant et getListEtudiant via le "web service Explorer" de eclipse sans soucis

    A+

  3. #3
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 65
    Points : 47
    Points
    47
    Par défaut
    donc si je comprend bien on tres bien utiliser un bean dans lequel un attribut est un tableau de String :
    je m'explique
    j'ai crée un bean (pour tester )
    Code :
    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
    public class ListFilter {
     
    	private List<NeListOrFilter> list = null;
    	private String[] tab = null;
    	private List<String> li = null;
    	private String rr = null;
    	private Object obj = null;
     
     
     
    	public String getRr() {
    		return rr;
    	}
     
    	public void setRr(String rr) {
    		this.rr = rr;
    	}
     
    	public List<String> getLi() {
    		return li;
    	}
     
    	public void setLi(List<String> li) {
    		this.li = li;
    	}
     
    	public String[] getTab() {
    		return tab;
    	}
     
    	public void setTab(String[] tab) {
    		this.tab = tab;
    	}
     
    	public ListFilter(){
     
    	}
     
    	public ListFilter(List<NeListOrFilter> list){
    		this.list = list;
    	}
     
    	public List<NeListOrFilter> getList() {
    		return list;
    	}
     
    	public void setList(List<NeListOrFilter> list) {
    		this.list = list;
    	}
     
    	public Object getObj() {
    		return obj;
    	}
     
    	public void setObj(Object obj) {
    		this.obj = obj;
    	}
    }
    Resultat du test : je peux seulement voir setObj(Object obj) et setRr(Object rr).
    lorsque tu parle des annotations , tu veux dire que je dois ajouter des annotations dans les javabean ? si oui lequels

  4. #4
    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
    J'ai ajouter des annotations dans la classe ListEtudiant comme ceci :

    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
     
    package oca;
     
    import javax.jws.WebMethod;
    import javax.jws.WebService;
     
    @WebService(
    			targetNamespace = "http://oca", 
    			portName = "ListEtudiantSOAPPort", 
    			serviceName = "ListEtudiantService", 
    			name = "ListEtudiantPortType")
    public class ListEtudiant {
     
    	private Etudiant[] listEtudiant = null;
     
    	public ListEtudiant() {
    	}
     
    	public ListEtudiant(Etudiant[] listEtudiant) {
    		this.listEtudiant = listEtudiant;
    	}
     
    	@WebMethod(operationName="getListEtudiant", action="" ) 
    	public Etudiant[] getListEtudiant() {
    		return listEtudiant;
    	}
     
    	@WebMethod(operationName="setListEtudiant", action="" ) 
    	public void setListEtudiant(Etudiant[] listEtudiant) {
    		this.listEtudiant = listEtudiant;
    	}
    }
    Pour générer les classes, je lance la commande suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    > cd C:\Program Files\Java\jdk1.6.0_05\bin
     
    > wsgen -s D:\eclipse\Test\JaxWsEtudiants\src -cp D:\eclipse\Test\JaxWsEtudiants\bin oca.ListEtudiant
    Pour tester le webservice, j'ai fait un simple programmme java comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    package oca;
    import javax.xml.ws.Endpoint;
    public class MonServerEtudiant {
    	public static void main(String[] args) throws Exception{
    	     String uri = "http://127.0.0.1:9083/test?wsdl";
    	     Endpoint.publish(uri, new ListEtudiant());
    	     System.out.println("> " + uri);
    	     System.out.println("pressez [enter] pour terminer");
    	     System.in.read();
    	     System.out.println("FIN");
    	     System.exit(0);
    	}
    }
    A+

Discussions similaires

  1. Affichage d'objets complexe dans une JSP
    Par seyar666 dans le forum Taglibs
    Réponses: 2
    Dernier message: 12/06/2012, 11h56
  2. Sélection / désélection d'un objet complexe dans une listview
    Par x031183 dans le forum Composants graphiques
    Réponses: 4
    Dernier message: 13/04/2012, 16h17
  3. Réponses: 2
    Dernier message: 23/03/2009, 13h25
  4. Consommation de messages JMS par une application Web
    Par romain3395 dans le forum Wildfly/JBoss
    Réponses: 7
    Dernier message: 09/02/2009, 21h41
  5. [AJAX] Déplacer des objets HTML sur une page web
    Par brazilia28 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 09/06/2007, 12h47

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