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 :

[WebService]Fichier Java et WSDL associé pour Web Services


Sujet :

Services Web Java

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8
    Points : 7
    Points
    7
    Par défaut [WebService]Fichier Java et WSDL associé pour Web Services
    Bonjour à tous,
    j'ai un fichier Java qui génère un fichier WSDL pour un Web Service. Le pb c'est que je dois avoir dans mon code qqch qui génére un message de type "fault". Le message de type "Input" sont les parametres de ma méthode, les messages de type "Output" est ce qu'elle retourne, mais le type "fault" je ne sais pas . J'ai bien esayé de lancer des exception pour voir si ce type représenatait les erreurs mais je n'arrive à rien. Voici ma méthode puis l'exemple ou "fault "est présent dans le WSDL et que je voudrais voir dans mon futur WSDL mais en changenat qqch ds mon 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
     
    public class AddressBookServices {
     
    public Contact retrieveContact (int custoId,String lastName,String firstName,String company)throws Exception {     
     
    	String custo = Integer.toString(custoId);
    	Contact contact= new Contact();
    	contact.setAge(24);
    	contact.setFirstName("Steve");
                    contact.setCompany("CAP GEMINI");
     
    	if (custo == null || (lastName.equals(null) && firstName.equals(null)&& company.equals(null))){ 
                   } 
     
    	else {
     
    	  if (contact.getFirstName().equals(firstName)                          ||contact.getCompany().equals(company)) 
    	     return contact;
     
    	else{
    	    Contact pasContact = new Contact("Contact introuvable");
    	    contact = pasContact;
    	} 
     
                  }
     
          return contact;
       }
    }

    Type "fault" que je voudrais voir dans le WSDl associé au fichier Java précédent:

    <wsdl:binding name="AddressSoapBinding" type="intf:AddressService">
    <wsdlsoap:binding style="rpc"
    transport="http://schemas.xmlsoap.org/soap/http"/>
    <wsdl:operation name="updateAddress">
    <wsdlsoap:operation soapAction=""/>
    <wsdl:input name="updateAddressRequest">
    <wsdlsoap:body
    encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
    namespace="http://address.jaxrpc.samples" use="encoded"/>
    </wsdl:input>
    <wsdl:output name="updateAddressResponse">
    <wsdlsoap:body
    encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
    namespace="http://address.jaxrpc.samples" use="encoded"/>
    </wsdl:output>
    <wsdl:fault name="updateAddressFaultInfo">
    <wsdlsoap:body
    encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
    namespace="http://address.jaxrpc.samples" use="literal"/>
    </wsdl:fault>
    </wsdl:operation>
    </wsdl:binding
    Merci à vous tous, deux jours que je galère...




    [Modéré par Didier]
    Ajout de tag dans le titre
    Lire les règles du forum : Règles du forum Java

  2. #2
    Nouveau membre du Club
    Inscrit en
    Juillet 2002
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 38
    Points : 33
    Points
    33
    Par défaut
    Je suis pas sur de bien comprendre, tu voudrais que le type fault apparaisse dans ton .wsdl et ce n'est pas le cas actuellment c ça ?
    sicard_51, la bonne brioche anisée !

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8
    Points : 7
    Points
    7
    Par défaut
    Oui c'est bien çà, je voudrais que dans ma méthode, si je lance une Exception, on voit l'équivalent en "fault"dans mon fichier WSDL générer, sachant que "input" représente les parametres de ma méthode et "output" la sortie en return et moi j'ai beau mettre des exceptions dans mon code je ne vois que "input" et "output" comme type de message...
    Merci à toi pour ton interêt !

  4. #4
    Nouveau membre du Club
    Inscrit en
    Juillet 2002
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 38
    Points : 33
    Points
    33
    Par défaut
    Ce qui est sur, c'est que l'on peut passer les exceptions en web services. Plutôt que de faire un "throw Exception" sur ta méthode retrieveContact, défini une classe MyException qui étend Exception et fais ensuite un "throws MyException" sur ta méthode et regénère le wsdl.

    Perso, je bosse aussi sur les web services, et je vois dans mes .wsdl les exceptions succeptibles d'être levée par mes méthodes exportées en web services :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <wsdl&#58;message name="SessionExpirationException">
     
          <wsdl&#58;part name="fault" type="tns8&#58;SessionExpirationException"/>
     
       </wsdl&#58;message>
    sicard_51, la bonne brioche anisée !

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par sicard_51
    Ce qui est sur, c'est que l'on peut passer les exceptions en web services. Plutôt que de faire un "throw Exception" sur ta méthode retrieveContact, défini une classe MyException qui étend Exception et fais ensuite un "throws MyException" sur ta méthode et regénère le wsdl.

    Perso, je bosse aussi sur les web services, et je vois dans mes .wsdl les exceptions succeptibles d'être levée par mes méthodes exportées en web services :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <wsdl&#58;message name="SessionExpirationException">
     
          <wsdl&#58;part name="fault" type="tns8&#58;SessionExpirationException"/>
     
       </wsdl&#58;message>
    Merci beaucoup sicard ! Tu me confirmes donc que cà n'est pas possible de faire apparaitre "fault" dans le WSDL autrement qu'en créant une classe dérivant de Exception et en faisant ensuite un "throws MyException" sur ta méthode ?
    Dernière chose : comment faire pour que différentes excpetion soient lancées dans une méthode ?
    Exemple : dans retrieveContact, je voudrais un type d'exception avec un message précis et trois ligne plus loin dansle code je voudrais une autre exception avec un autre message à faire passer :

    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
     
    public Contact retrieveContact &#40;int custoId,String lastName,String firstName,String company&#41;throws MyException &#123;      
     
       String custo = Integer.toString&#40;custoId&#41;; 
       Contact contact= new Contact&#40;&#41;; 
       contact.setAge&#40;24&#41;; 
       contact.setFirstName&#40;"Steve"&#41;; 
                    contact.setCompany&#40;"CAP GEMINI"&#41;; 
     
       if &#40;custo == null || &#40;lastName.equals&#40;null&#41; && firstName.equals&#40;null&#41;&& company.equals&#40;null&#41;&#41;&#41;&#123; 
    //Excepetion retrouvable ds le WSDL disant "Champs obligatoires"
                   &#125; 
     
       else &#123; 
     
         if &#40;contact.getFirstName&#40;&#41;.equals&#40;firstName&#41;                          ||contact.getCompany&#40;&#41;.equals&#40;company&#41;&#41; 
            return contact; 
     
       else&#123; 
           Contact pasContact = new Contact&#40;&#41;; 
           contact = pasContact; 
           //Excepetion retrouvable ds le WSDL disant "Contact introuvable"
       &#125; 
     
                  &#125; 
     
          return contact; 
       &#125;
    Merci pour toutes tes réponses !!!

  6. #6
    Nouveau membre du Club
    Inscrit en
    Juillet 2002
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 38
    Points : 33
    Points
    33
    Par défaut
    Et bien je tenterais un truc du genre :

    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
     
    public Contact retrieveContact &#40;int custoId,String lastName,String firstName,String company&#41; throws Exception1, Exception2 &#123;      
     
       String custo = Integer.toString&#40;custoId&#41;; 
       Contact contact= new Contact&#40;&#41;; 
       contact.setAge&#40;24&#41;; 
       contact.setFirstName&#40;"Steve"&#41;; 
                    contact.setCompany&#40;"CAP GEMINI"&#41;; 
         if &#40;custo == null&#41;||&#40;lastName.equals&#40;null&#41; && firstName.equals&#40;null&#41;&& company.equals&#40;null&#41;&#41;&#41;&#123; 
              throw new Exception1&#40;&#41;;
          &#125; 
     
       else &#123; 
     
         if &#40;contact.getFirstName&#40;&#41;.equals&#40;firstName&#41;                          ||contact.getCompany&#40;&#41;.equals&#40;company&#41;&#41; 
            return contact; 
     
       else&#123; 
           Contact pasContact = new Contact&#40;&#41;; 
           contact = pasContact; 
           throw new Exception2&#40;&#41;;
       &#125; 
     
                  &#125; 
     
          return contact; 
       &#125;
    J'espère répondre à ta question.
    sicard_51, la bonne brioche anisée !

  7. #7
    Nouveau membre du Club
    Inscrit en
    Juillet 2002
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 38
    Points : 33
    Points
    33
    Par défaut
    Désolé, j'ai oublié une partie de ce que je voulaiqs dire :

    Ensuite dans ton code qui fait appel à la méthode retrieveContact, tu fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    try &#123;
      Contact contact = monObjet.retrieveContact&#40;&#41;;
    &#125;
    catch&#40;Exception1&#41; &#123;
      System.out.println&#40;"veuillez remplir tous les champs"&#41;;
    &#125;
    catch&#40;Exception2&#41; &#123;
      System.out.println&#40;"Contact introuvable"&#41;;
    &#125;
    sicard_51, la bonne brioche anisée !

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8
    Points : 7
    Points
    7
    Par défaut
    Merci beaucoup sicard, mais je vais t'embeter une dernière fois . Comme tu vois, ma méthode retrieveContact renvoie un tableau de contacts (Contact []).
    Dans mon esprit , ce tableau peut-être vide si on n'y affecte rien.
    Le pb c'est que quand je génère le fichier WSDl et que je le regarde en mode graphique, je vois que dans le type "message" à "retrieveContactResponse" , on me renvoie bien un tableau de Contact mais qui qui comprendrait de 1 à n éléments (çà affiche 1..*). Mon pb est que je voudrais voir apparaitre "0 à n" (0..*). Comment faire dans le code source ?


    On va pas bien mais c'est le deuxième rectangle en partant de la gauche qui est un tableau de Contact (Contact detaillé ensuite sur la droite avec ses champs), et en dessous y'a ecrit 1..*
    Encore merci !!!

  9. #9
    Nouveau membre du Club
    Inscrit en
    Juillet 2002
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 38
    Points : 33
    Points
    33
    Par défaut
    Désolé, l'image n'apparaît pas chez moi, de plus je ne connais pas trop le fonctionnement de ce mode graphique associé aux fichiers .wsdl, quoi qu'il en soit, si ton tableau est vide ou null, il le restera même après son passage par les web services.
    sicard_51, la bonne brioche anisée !

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8
    Points : 7
    Points
    7
    Par défaut
    OK d'accord, je te remercie pour toutes tes précisions !!!

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

Discussions similaires

  1. java.sql.Date et les web services
    Par technopole dans le forum Services Web
    Réponses: 5
    Dernier message: 03/04/2010, 13h59
  2. Probleme d'input/output XML pour Web service Java - AXIS2
    Par 2beornot2be dans le forum Services Web
    Réponses: 1
    Dernier message: 06/08/2009, 12h59
  3. Créer client pour web services sous JWSDP
    Par JauB dans le forum Services Web
    Réponses: 0
    Dernier message: 16/01/2009, 14h31
  4. help pour web service et ldap
    Par ibtissamr dans le forum Services Web
    Réponses: 3
    Dernier message: 01/07/2008, 20h01
  5. documentation pour web services
    Par coax81 dans le forum Développement
    Réponses: 2
    Dernier message: 04/09/2007, 21h31

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