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 :

@WebParam avec type complexe


Sujet :

Services Web Java

  1. #1
    Membre éprouvé Avatar de anisj1m
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2006
    Messages
    1 067
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 067
    Points : 955
    Points
    955
    Par défaut @WebParam avec type complexe
    Bonjour,

    J'ai un paramètre de ma méthode web-service de type complexe (exemple objet Homme(nom, prenom, age) ), et je veux dans le soap message j'aurai ces attribues et non pas <homme/>.

    est ce possible

    Merci
    Ce qu'on appelons le hasard n'est que notre incapacité à comprendre un degré d'ordre supérieur.

  2. #2
    Membre éprouvé Avatar de anisj1m
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2006
    Messages
    1 067
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 067
    Points : 955
    Points
    955
    Par défaut
    plus d'explication:
    soit la méthode du web service
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    @WebMethod
    	public void printResult(@WebParam(name = "person") Person person)
    dans la requête soap j'obtient:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     <log:printResult>
             <!--Optional:-->
             <person/>
          </log:printResult>
    alors que moi je veux:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     <log:printResult>
             <!--Optional:-->
             <person>
                 <name></name>
                 <age></age>
            </person>
          </log:printResult>
    supposant que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public class Person{
    private String name;
    	private int age;
    ...
    }
    Ce qu'on appelons le hasard n'est que notre incapacité à comprendre un degré d'ordre supérieur.

  3. #3
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Points : 7 083
    Points
    7 083
    Par défaut
    JAX-WS utilise JAXB pour "sérialiser" les objets Java. Il faut donc soit configurer JAX-WS pour qu'il utilise un binding de ton choix, soit annoter ta classe.

    Je te laisses consulter la documentation JAX-WS concernant l'utilisation de JAXB et celle de JAXB concernant la "sérialization" (marshalling).
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

  4. #4
    Membre éprouvé Avatar de anisj1m
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2006
    Messages
    1 067
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 067
    Points : 955
    Points
    955
    Par défaut
    merci Nemek,
    comment puis-je annoter ma classe?
    Ce qu'on appelons le hasard n'est que notre incapacité à comprendre un degré d'ordre supérieur.

  5. #5
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Points : 7 083
    Points
    7 083
    Par défaut
    Utilises le package javax.xml.bind.annotation.

    Tu ne devrais pas rencontrer trop de problèmes en ne faisant qu'annoter la classe Personne avec XmlRootElement.

    Il faut juste que tu es des getter/setter sur les méthodes que tu veux sérialiser.

    Si tu as un WSDL avec un schéma il faudra spécifier les noms et namespace des éléments dans tes annotations JAXB.
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

  6. #6
    Membre éprouvé Avatar de anisj1m
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2006
    Messages
    1 067
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 067
    Points : 955
    Points
    955
    Par défaut
    merci nemek,
    c'est très bien avec XmlRootElement, tout est bon.

    Qu'est ce que tu veux dire par :
    Si tu as un WSDL avec un schéma il faudra spécifier les noms et namespace des éléments dans tes annotations JAXB.
    Oui il y a un WSDL dans le projet dans le quel je travailles, mais sans modifier ce wsdl et avec mon classe annoté @webservice et mon bean annoté par @XmlRootElement j'ai pu avoir le soap.

    sachant que j'ai dans le fichier sun-jaxws.xml ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <endpoint name="monservice"
          implementation="com.work.Monservice"
          url-pattern="/services/soap/monservice">
    </endpoint>
    est ce que je dois changer le wsdl comme tu as dis?
    Merci
    Ce qu'on appelons le hasard n'est que notre incapacité à comprendre un degré d'ordre supérieur.

  7. #7
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Points : 7 083
    Points
    7 083
    Par défaut
    Dans le WSDL tu peux spécifier un schéma pour le corps du message.
    Dans ce cas il faut que le schéma corresponde à ton binding JAXB.

    Mais si ça marche c'est bon comme ça
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

  8. #8
    Membre éprouvé Avatar de anisj1m
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2006
    Messages
    1 067
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 067
    Points : 955
    Points
    955
    Par défaut
    oui ça marche mais juste je voulais savoir l'utiliter du fichier wsdl existant dans le projet,
    certaint endpoint ont un attribut :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    wsdl="WEB-INF/wsdl/MesService.wsdl"
    et d’après mes connaissance une fois que tu as creéer le webservice tu peux se supprimer cet attribut du endpoint,
    alors pourquoi ces références au fichier wsdl, et l'existence du fichier wsdl sert a quoi dans le projet, sachant que ce fichier est générer automatiquement par le framework, non?
    Ce qu'on appelons le hasard n'est que notre incapacité à comprendre un degré d'ordre supérieur.

Discussions similaires

  1. [Web Service] Appel web service avec type complexe
    Par foujino dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 05/05/2011, 17h30
  2. Service Web avec Axis et types complexes.
    Par Skyman37 dans le forum Services Web
    Réponses: 17
    Dernier message: 13/01/2011, 10h28
  3. Réponses: 5
    Dernier message: 17/01/2008, 14h18
  4. Webservice avec AXIS , Eclipse et retour de type complexe
    Par Ashen-Shugar dans le forum Services Web
    Réponses: 2
    Dernier message: 26/12/2007, 22h24
  5. type complex avec Visual C++ 2005
    Par plessis dans le forum Visual C++
    Réponses: 2
    Dernier message: 02/05/2007, 15h21

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