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 :

[AXIS] Obtenir le WSDL d'un service depuis le code ...


Sujet :

Services Web Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 57
    Par défaut [AXIS] Obtenir le WSDL d'un service depuis le code ...
    Bonjour,

    Est-il possible d'obtenir le WSDL d'un WS à partir du code, de façon à ensuite invoquer dynamiquement et automatikement les opérations.

    PS: J'ai AXIS comme client WS.

    Merci beaucoup,

    Fab

  2. #2
    Membre chevronné

    Inscrit en
    Avril 2005
    Messages
    317
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 317
    Par défaut
    Je cherche à faire la même chose...
    Moi j'ai l'idée de lire le flux xml du wsdl. On obtient ainsi les opérations du web service, les params d'entrée et de sortie.

  3. #3
    Membre confirmé
    Inscrit en
    Décembre 2002
    Messages
    186
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 186
    Par défaut
    non, seul l'inverse est possible

  4. #4
    Membre chevronné

    Inscrit en
    Avril 2005
    Messages
    317
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 317
    Par défaut
    mauvais_karma, peux-tu péciser ta remarque ?
    Qu'est ce qui m'empeche de lire le flux wsdl (c'est du xml) et d'en déduire les méthodes du webservice

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 75
    Par défaut
    Bonjour tout le monde

    Ca semble être le topic des questions réponses claires et précises ici

    Bon alors je ne sais pas si j'ai bien compris la question de l'instigateur de ce topic, mais il me semble qu'un package d'Axis propose une classe nommée Java2WSDL qui à partir du code Java de ton service te créé le fichier WSDL qui va bien.

    Par contre pour ta question eric, je comprends pas trop. Tu dis que tu souhaite faire la même chose, mais ça me semble être l'opposé que tu veux faire, à savoir à partir du WSDL obtenir des classes java. Si c'est ça, dans le même package on a une classe WSDL2Java qui te créé toutes les classes dont tu as besoin pour consommer le WebService correspondant au fichier WSDL fourni.

    Si c'est autre chose que tu souhaites faire, des explications plus poussées seraient souhaitables pour pouvoir te répondre.

  6. #6
    Membre chevronné

    Inscrit en
    Avril 2005
    Messages
    317
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 317
    Par défaut
    Merci ArseNic pour ton aide

    Ce que je cherche à faire, c'est une petite appli j2ee qui à partir de la lecture du fichier wsdl d'un webservice :
    - me liste/affiche les méthodes disponiblent
    - en sélectionnant une des méthode de la liste, je génére un formulaire html qui me permettra de saisir les paramétres de la méthode sélectionnée.
    - en validant le formulaire, j'affiche les infos obtenues en retour de l'appel de la méthode (affichage brute des infos : ce sera du xml)
    Note : Le webservice sera généré avec Axis

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 75
    Par défaut
    Citation Envoyé par ericw78
    Merci ArseNic pour ton aide

    Ce que je cherche à faire, c'est une petite appli j2ee qui à partir de la lecture du fichier wsdl d'un webservice :
    - me liste/affiche les méthodes disponiblent
    - en sélectionnant une des méthode de la liste, je génére un formulaire html qui me permettra de saisir les paramétres de la méthode sélectionnée.
    - en validant le formulaire, j'affiche les infos obtenues en retour de l'appel de la méthode (affichage brute des infos : ce sera du xml)
    Note : Le webservice sera généré avec Axis
    Salut eric!

    Wahou ça m'a l'air bien compliqué à faire ton appli...
    Ca dépasse le champ de mes compétences (relativement modestes sur les webServices il faut l'avouer). Faire tout ce que tu souhaites dynamiquement doit être possible mais au prix de sacrés efforts je pense. Si au jour d'aujourd'hui on me demandait de faire la même chose que toi, je dirais qu'il faudrait tout se faire à la main.

    Pour récupérer le nom des opérations d'un service, c'est pas compliqué y a une méthode pour ça (me souviens plus son nom un truc comme getWebServices).
    Par contre pour récupérer la signature d'une méthode...
    Si on pouvait chopper ça sous forme de String je pense que ça serait possible d'écrire une méthode pour la parser et ainsi isoler le nombre d'arguments et leurs types (ça me semble quand même bien chiant à faire). Ou alors à la limite dès qu tu as le nom des opérations il doit être possible d'aller parcourir le fichier WSDL aux endroits concernant ces méthodes et d'extraire les infos...

    En ce qui concerne le retour des infos en tant que flux XML je ne sais pas si c'est possible, mais si ça l'est, je serais curieux de savoir comment faire (pense à moi si tu trouve comment faire)

    Bref ton projet m'a l'air ambitieux, sans doute pas infaisable, mais ça me semble être quelquechose qui prendra pas mal de temps à faire.
    Enfin si quelqu'un d'autre voit des moyens faciles de faire ça qu'il se manifeste, je souhaiterai pour toi que je me trompe.

    Allez bon courage, et tiens nous au courant.

  8. #8
    Membre chevronné

    Inscrit en
    Avril 2005
    Messages
    317
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 317
    Par défaut
    ok bon je viens de tester WSIF et la classe DynamicInvoker fait exactement ce que je veux
    Je viens de gagner 3 jours de boulot

    J'ai plus qu'a me faire 2/3 pages jsp et hop c'est fini
    Merci à tous

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 75
    Par défaut
    Citation Envoyé par ericw78
    ok bon je viens de tester WSIF et la classe DynamicInvoker fait exactement ce que je veux
    Je viens de gagner 3 jours de boulot

    J'ai plus qu'a me faire 2/3 pages jsp et hop c'est fini
    Merci à tous
    Bon bah c'est cool
    Je ne connaissais pas cet outil.
    Par contre comment fais tu pour récupérer uniquement la structure XML du retour de tes web Services? Ca m'interresserai de pouvoir le faire.
    @+

  10. #10
    Membre chevronné

    Inscrit en
    Avril 2005
    Messages
    317
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 317
    Par défaut
    En fait, la classe DynamicInvoker utilise une méthode différente et j'ai plus besoin d'aller lire le flux wsdl.
    Qu'entend tu par "récupérer uniquement la structure XML du retour de tes web Services" ? Tu veux réceupérer le fichier wsdl ?
    Car dans ce cas, il te suffit d'appeller ton webservice http://..../monwebservice?wsdl

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 75
    Par défaut
    Citation Envoyé par ericw78
    En fait, la classe DynamicInvoker utilise une méthode différente et j'ai plus besoin d'aller lire le flux wsdl.
    Qu'entend tu par "récupérer uniquement la structure XML du retour de tes web Services" ? Tu veux réceupérer le fichier wsdl ?
    Car dans ce cas, il te suffit d'appeller ton webservice http://..../monwebservice?wsdl
    Non, imaginons que tu manipules un type complexe en retour de ton webService, décrit comme suit dans le WSDL (là c'est du pseudo WSDL) :

    <complex type = monTypeComplexe>
    <monAttribut1 : type String/>
    <monAttribut2 : type int/>
    </complex type>

    Comment faire pour récupérer ce retour sous sa forme XML, et pas sous sa forme objet java? (est ce possible déja?)

  12. #12
    Invité de passage
    Inscrit en
    Février 2007
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 1
    Par défaut demande d'aide
    bonjour je suis étudiante et je dois réaliser un projet qui fait de la découverte et de l'invocation dynamique d'un serv ice web
    j'ai lu la classe DynamicInvoker de wsif mais je n'ai malheureusement pas compris grand chose à cette classe ni comment l'utiliser
    je vous demande donc de m'expliquer et de me donner quelques indication sur comment invoquer un service web dynamiquement
    merci

  13. #13
    Membre confirmé Avatar de silverfab34
    Inscrit en
    Mars 2006
    Messages
    203
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Mars 2006
    Messages : 203
    Par défaut
    Bonjour,
    Votre sujet m'interesse (je sais 2 ans après lol).
    A partir de ma reponse SOAP, j'aimerais creer un fichier XML avec le contenu de cette reponse !

    En gros :
    J'ai ma classe java qui execute le webservice (j'utilise AXIS), l'objet "reponse" que je renvois dans cette classe, son contenu , j'aimerais le mettre dans un fichier XML !

    Merci pour votre aide, bonne fin de journée !

  14. #14
    Membre éprouvé

    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 105
    Par défaut
    Bonjour

    POur ce qui est du pb de silverfab34 untruc du style:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ByteArrayOutputStream out=new ByteArrayOutputStream();
    MessageContext.getCurrentContext().getCurrentMessage().writeTo(out);
    System.out.println(out);
    Pour le reste les pistes éventuelles sont wsdl4j pour le parsing du wsdl, qui va permettre de parser le fichier wsdl et déterminer les opérations.
    Il faut aussi analyser le schema pour générer les formulaires, et les messages. pour cela, il faut utiliser soit XmlSchema http://ws.apache.org/commons/XmlSchema/index.html
    soit xmlbeans http://xmlbeans.apache.org/
    Une piste pourcela est dispo dans les sources de soapui: http://www.soapui.org/
    Mais l'approche de formulaire dynamiques est complexe surtout si il faut gérer des tableaux d'objets.

  15. #15
    Membre confirmé Avatar de silverfab34
    Inscrit en
    Mars 2006
    Messages
    203
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Mars 2006
    Messages : 203
    Par défaut
    Citation Envoyé par willy78 Voir le message
    Bonjour

    POur ce qui est du pb de silverfab34 untruc du style:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ByteArrayOutputStream out=new ByteArrayOutputStream();
    MessageContext.getCurrentContext().getCurrentMessage().writeTo(out);
    System.out.println(out);
    Pour le reste les pistes éventuelles sont wsdl4j pour le parsing du wsdl, qui va permettre de parser le fichier wsdl et déterminer les opérations.
    Il faut aussi analyser le schema pour générer les formulaires, et les messages. pour cela, il faut utiliser soit XmlSchema http://ws.apache.org/commons/XmlSchema/index.html
    soit xmlbeans http://xmlbeans.apache.org/
    Une piste pourcela est dispo dans les sources de soapui: http://www.soapui.org/
    Mais l'approche de formulaire dynamiques est complexe surtout si il faut gérer des tableaux d'objets.

    Bonjour et merci , j'avais trouvé une methode ....par contre je suis à la recherche d'une methode pour effacer les balises SOAP comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
       <soapenv:Body>

  16. #16
    Membre confirmé Avatar de silverfab34
    Inscrit en
    Mars 2006
    Messages
    203
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Mars 2006
    Messages : 203
    Par défaut
    C'est bon, j'ai resolu mon souci !

    Pour creer mon fichier xml, j'ai utilisé des :
    InputStream
    FileOutputStream
    BufferedReader
    BufferedWriter

    et pour effacer le contenu ma chaine de caractere, j'ai fait des substring !

  17. #17
    Membre confirmé
    Inscrit en
    Janvier 2007
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 59
    Par défaut
    Bonjour à tous,
    je viens de lire ce topic et ça m'interesse bcp,

    je réalise une application pour la composition de services web,le résultat de la composition est un fichier wsdl qui décrit le processus global, ayant une seule operation à exécuter que j'ai nommé "process", les entrées et les sorties du service somposite c'est l'utilisateur de mon système qui les définit et peuvent etre simples ou de type complexe (voir ci-joint un exemple de WSDL)

    j'arrive maintenant à l'exécution du service composite créé, qui doit se faire de manière automatique, sachant que je dispose que du wsdl à l'adresse :
    http://localhost:8080/active-bpel/se...MyProcess?wsdl
    comment je dois générer une page web (Jsp ou ...) contenant un formulaire des entrées du service composite, et avec un bouton "invoke" j'invoque le service puis je retourne le résultat dans une nouvelle page web?
    est ce que je dois utiliser XSLT?
    est ce que WSIF répond à mes besoins? ou alors wsdl4j?

    Je vous remercie d'avance!
    c'est pour un projet de fin d'études!
    Fichiers attachés Fichiers attachés

  18. #18
    Membre expérimenté
    Inscrit en
    Juin 2008
    Messages
    207
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 207
    Par défaut
    Bonjour,

    Eclipse peut générer des pages JSP permettant de tester un service web grâce au contrat WSDL du service en question (le framework utilisé par défaut par Eclipse est Axis).
    Pour cela, tu dois créer un projet web de type Dynamic Web Project, puis y créer un Web Service Client. En indiquant l'URL du contrat WSDL et en choisissant Test client, Eclipse va générer plusieurs pages JSP qui pourront peut-être te fournir un point de départ pour un client web plus perfectionné.

  19. #19
    Membre confirmé
    Inscrit en
    Janvier 2007
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 59
    Par défaut
    D'abor merci pour votre réponse,

    oui j'ai déja essayé cela, grace à wsdl2java eclipse crée le client pour invoquer un service web mais moi je voudrais le réaliser à partir de mon application java, genre l'utilisateur choisit un service, je lui affiche la page pour l'invocation! mais comment le faire dynamiquement?

  20. #20
    Membre expérimenté
    Inscrit en
    Juin 2008
    Messages
    207
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 207
    Par défaut
    En gros, tu cherches à mettre en place une découverte dynamique des services web disponibles ?

    Si c'est bien ça, tu peux peut-être chercher du côté de WS-Inspection, WSIL ou éventuellement UDDI, mais je ne saurais t'aider davantage là-dessus...

Discussions similaires

  1. Web service depuis un fichier wsdl
    Par pere_noel00 dans le forum Services Web
    Réponses: 1
    Dernier message: 10/07/2009, 15h27
  2. Problème d'utilisation d'Axis avec des WSDL
    Par Tino13 dans le forum Services Web
    Réponses: 2
    Dernier message: 31/03/2007, 10h09
  3. Réponses: 2
    Dernier message: 24/03/2007, 12h11
  4. [WebService][WSDL] Generation de WSD depuis du C (ou autre)
    Par chronos dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 05/01/2007, 17h02
  5. Réponses: 5
    Dernier message: 19/05/2006, 15h22

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