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 :

[Web Services] Avis


Sujet :

Services Web Java

  1. #1
    Membre du Club
    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
    Points : 51
    Points
    51
    Par défaut [Web Services] Avis
    Bonjour à tous!

    Je développe actuellement une appli Web qui fournit des Web services. Je travaille avec WebObjects qui est un framework Apple basé sur Java. Ce sont des services complexes dans la mesure où je dois renvoyer de nombreuses informations en une fois au consommateur du service.
    Typiquement le consommateur spécifie l'ID d'un objet dans une base de données, et le service lui renvoie l'ensemble des infos utiles sur cet objet.

    J'ai donc une classe Webservices qui ressemble à ça :

    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
     
    public class WebServices {
     
    public LogoDataBean WS_GetLogoData (String idLogo) {
     
    		EOEditingContext context = new EOEditingContext();
     
    		try {
     
                Logo found = (Logo) EOUtilities.objectMatchingKeyAndValue(context,"Logo","logoID", new Integer(idLogo));
    	         LogoDataBean monBean = new LogoDataBean();
     
    			if (found != null) {
     
    				StringTokenizer st = new StringTokenizer(found.logoSize(),"x");
    				int i = 0;
     
    				while (st.hasMoreTokens()) {
    					i++;
    					if (i == 1) {
    						monBean.setLargeur(st.nextToken());
     
    					}
    					else {
    						monBean.setHauteur(st.nextToken());
     
    					}
     
    				}
     
    				monBean.setFullpath(found.logoFullPath());
     
    				monBean.setSociete(found.logoGroup());
     
    				monBean.setMarque(found.logoMark());
     
    				monBean.setCategorie(found.logoCategory());
     
    				monBean.setSouscategorie(found.logoSubCategory());
    				monBean.setCommentaires(found.logoDescription());
                monBean.setResolution(found.logoSize());
     
     
    				return (monBean);
     
    			}
    			else {
    				monBean.setCommentaires("Aucun logo ne correspond a votre demande");
     
    				return (monBean);
    			}
     
     
    		} catch (EOUtilities.MoreThanOneException ex) {
    			LogoDataBean monBeanError = null;	
    			monBeanError.setCommentaires("Erreur lors de la recherche de votre Logo");
     
    			return monBeanError;
     
    		}
     
    	}
    }
    En gros ce code va chercher dans la base de mon projet l'objet ayant l'ID spécifié par l'user, récupère les infos de celui ci, les place dans un bean et renvoie ce bean. Je n'ai pas trouvé d'autre moyen que de créer un bean pour renvoyer plusieurs valeurs (si y a plus simple je suis preneur )

    Voici la classe LogoDataBean :

    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
     
    public class LogoDataBean implements Serializable {
     
    	private String fullpath;
    	private String largeur;
    	private String hauteur;
    	private String societe;
    	private String marque;
    	private String categorie;
    	private String souscategorie;
    	private String commentaires;
    	private String resolution;
     
     
    	public String fullpath(){
    		return fullpath;
    	}
     
    	public void setFullpath(String maString){
    		fullpath = maString;
    	}
     
    	public String largeur(){
    		return largeur;
    	}
     
    	public void setLargeur(String maString){
    		largeur = maString;
    	}
     
    	public String hauteur(){
    		return hauteur;
    	}
     
    	public void setHauteur(String maString){
    		hauteur = maString;
    	}
     
    	public String societe(){
    		return societe;
    	}
     
    	public void setSociete(String maString){
    		societe = maString;
    	}
     
    	public String marque(){
    		return marque;
    	}
     
    	public void setMarque(String maString){
    		marque = maString;
    	}
     
    	public String categorie(){
    		return categorie;
    	}
     
    	public void setCategorie(String maString){
    		categorie = maString;
    	}
     
    	public String souscategorie(){
    		return souscategorie;
    	}
     
    	public void setSouscategorie(String maString){
    		souscategorie = maString;
    	}
     
    	public String commentaires(){
    		return commentaires;
    	}
     
    	public void setCommentaires(String maString){
    		commentaires = maString;
    	}
     
    	public String resolution(){
    		return resolution;
    	}
     
    	public void setResolution(String maString){
    		resolution = maString;
    	}
     
    }
    Le WSDL que je génère (enfin qui est généré automatiquement par WebObjects) donne ceci (je ne mets pas tout le fichier, mais juste ce qui me parait important. Si vous voulez en voir plus n'hésitez pas ) :

    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
     
    <complexType name="LogoDataBean">
      <sequence>
        <element name="categorie" nillable="true" type="xsd&#58;string"/>
        <element name="commentaires" nillable="true" type="xsd&#58;string"/>
        <element name="fullpath" nillable="true" type="xsd&#58;string"/> 
        <element name="hauteur" nillable="true" type="xsd&#58;string"/>
        <element name="largeur" nillable="true" type="xsd&#58;string"/>
        <element name="marque" nillable="true" type="xsd&#58;string"/>
        <element name="resolution" nillable="true" type="xsd&#58;string"/>
        <element name="societe" nillable="true" type="xsd&#58;string"/>
        <element name="souscategorie" nillable="true" type="xsd&#58;string"/>
      </sequence>
    </complexType>
     
    <element name="LogoDataBean" nillable="true" type="tns1&#58;LogoDataBean"/>
     
    <wsdl&#58;message name="WS_GetLogoDataRequest">
        <wsdl&#58;part name="idLogo" type="xsd&#58;string"/>
        <wsdl&#58;part name="machineType" type="xsd&#58;string"/>
        <wsdl&#58;part name="client" type="xsd&#58;string"/>
    </wsdl&#58;message>
     
    <wsdl&#58;message name="WS_GetLogoDataResponse">
        <wsdl&#58;part name="WS_GetLogoDataReturn" type="tns1&#58;LogoDataBean"/>
    </wsdl&#58;message>
    Voilà, ça fait long, mais je préfère détailler au maximum.
    Mes questions sont :

    - J'ai essayé d'utiliser ce web service (avec une appli WebObjects, donc en java) mais je n'y suis pas parvenu. On m'a parlé du package d'Apache Axis, contenant la classe WSDL2Java qui permet de générer la classe java correspondante au fichier WSDL (en éliminant les problèmes de serialization).
    Le truc c'est que je bosse sur un Macintosh, que modifier le CLASSPATH pour pouvoir utiliser WSDL2Java ça va me prendre du temps (je sais pas trop comment faire), et qu'à priori mes Web Services seront consommés par des applis écrites en C++.

    Donc au regard du fichier WSDL, pensez vous que mon WebService soit utilisable? Avec WSDL2Java ça passerait, non? Si oui, on peut en déduire qu'un programme C++ aussi, non?

    Voilà, en gros je voudrais savoir si le Web Service que je vous présente vous semble utilisable en l'état. Merci d'avance à tous, et bonne journée.

  2. #2
    Membre habitué
    Inscrit en
    Décembre 2002
    Messages
    186
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 186
    Points : 130
    Points
    130
    Par défaut
    Le truc c'est que je bosse sur un Macintosh, que modifier le CLASSPATH pour pouvoir utiliser WSDL2Java ça va me prendre du temps (je sais pas trop comment faire), et qu'à priori mes Web Services seront consommés par des applis écrites en C++.

    Donc au regard du fichier WSDL, pensez vous que mon WebService soit utilisable? Avec WSDL2Java ça passerait, non?
    Voilà, en gros je voudrais savoir si le Web Service que je vous présente vous semble utilisable en l'état.
    tu rigoles j'espère?
    ou achete toi un pc!


    il y a des tas d'outils qui se repose sur Java2WDSL et WSDL2Java: des dizaines de plugins pour eclipse, et pour tous les ide

  3. #3
    Membre du Club
    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
    Points : 51
    Points
    51
    Par défaut
    Citation Envoyé par mauvais_karma
    Le truc c'est que je bosse sur un Macintosh, que modifier le CLASSPATH pour pouvoir utiliser WSDL2Java ça va me prendre du temps (je sais pas trop comment faire), et qu'à priori mes Web Services seront consommés par des applis écrites en C++.

    Donc au regard du fichier WSDL, pensez vous que mon WebService soit utilisable? Avec WSDL2Java ça passerait, non?
    Voilà, en gros je voudrais savoir si le Web Service que je vous présente vous semble utilisable en l'état.
    tu rigoles j'espère?
    ou achete toi un pc!


    il y a des tas d'outils qui se repose sur Java2WDSL et WSDL2Java: des dizaines de plugins pour eclipse, et pour tous les ide
    Salut
    Euh non je rigole pas...

    Bah je vais pas demander à mon boss d'acheter un PC alors qu'on ne bosse quasiment que sur Apple et que WebObjects est un framework très complet. (à part sur les Web services où c'est un peu moins user-friendly que ce qu'ils annoncent).

    Et ma question n'est pas tant "comment utiliser WSDL2Java?" mais "mon WebService est il utilisable?". Si je devais absolument être en mesure de consommer un Web Service complexe au sein de mon appli je passerais du temps à faire fonctionner le package Axis, mais ce n'est pas le cas, vu que mon rôle n'est que de fournir des Web Services.

  4. #4
    Membre habitué
    Inscrit en
    Décembre 2002
    Messages
    186
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 186
    Points : 130
    Points
    130
    Par défaut
    Si je devais absolument être en mesure de consommer un Web Service complexe au sein de mon appli je passerais du temps à faire fonctionner le package Axis, mais ce n'est pas le cas, vu que mon rôle n'est que de fournir des Web Services.
    perso je suis pas d'accord, c ta responsabilité que tous les clients puissent consommer ton service!

    moi ce que je te dis c qu'on a pas tous un parser wsdl dans la tete

  5. #5
    Membre du Club
    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
    Points : 51
    Points
    51
    Par défaut
    Citation Envoyé par mauvais_karma
    Si je devais absolument être en mesure de consommer un Web Service complexe au sein de mon appli je passerais du temps à faire fonctionner le package Axis, mais ce n'est pas le cas, vu que mon rôle n'est que de fournir des Web Services.
    perso je suis pas d'accord, c ta responsabilité que tous les clients puissent consommer ton service!

    moi ce que je te dis c qu'on a pas tous un parser wsdl dans la tete
    Pour le coup je vois pas en quoi le fait que je sois capable de mon côté, d'utiliser un WebService complexe, garantira que tous les clients puissent l'utiliser...
    Je viens de trouver, après avoir cherché longuement, un package WSDL2JavaWO, spécialement fait pour WebObjects. Admettons qu'il me permette de consommer le Web Service dont je parle dans ce fil de discussion. Je vois pas en quoi ça garantirai l'utilisation de ce Service par des programmes écrits dans d'autres langages...

    Que veux tu que je fasses en plus de fournir le Service? Tu voudrais que je m'amuse à le tester dans tous les langages de programmation? Enfin si tu as des conseils à me donner pour garantir l'accès à n'importe quel programme client je suis preneur. Mais à priori, un WebService qui fournit un WSDL valide, il est utilisable par tout le monde, non? Après à chacun de trouver le moyen de l'utiliser, et ça me semble dépendre du langage qu'utilise le consommateur (WSDL2Java pour Java, et je ne sais quoi pour les autres langages).

    Donc d'après toi il n'est pas utilisable mon service? Je te fournis le WSDL, tu dispose de WSDL2Java, donc tu devrais pouvoir le faire fonctionner mon service, non? Si tu penses qu'il n'est pas exploitable j'aimerai en connaitre la raison.

    Merci d'avance.

    Cordialement,
    ArseNic

  6. #6
    Nouveau membre du Club
    Inscrit en
    Janvier 2004
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 30
    Points : 25
    Points
    25
    Par défaut
    Bonjour,

    Personellement ce WS ne me choque pas, passer un bean quand on à beaucoup de données est une bonne chose.

    pour faire simple :

    - garde ton bean et ton implémentation
    - fait une interface simple avec le nom de ta méthode et le type de retour ( ton bean )

    - fait un java2wsdl sur ton interface avec les bon parametres ( namespace, package, ... ) à toi de voir
    -> il te génére donc un wsdl qui devrait ressembler au tiens ( peut être le même )

    à partir du wsdl tu génére les stub, skeleton, testCase, ... avce wsdl2java

    la tu copie ton implementation dans le fichier qui se termine par ***imp

    tu peut générer un client également avec le même outil, pratique pour les test .

    Sinon avec axis méfie toi des conflis de lib avec ton serveur d'application !, et un script ant peut vite te faciliter la vie.

    RQ : Normalement les ws sont interopérables ( donc java - c++ c'est possible )mais j'ai pas testé

    a+

  7. #7
    Membre du Club
    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
    Points : 51
    Points
    51
    Par défaut
    Merci pour ta réponse Sancho!
    Je me permets de remonter ce topic une dernière fois afin d'avoir des explications (s'il y en a) à propos des remarques de mauvais_karma.

    Notamment cette remarque :
    perso je suis pas d'accord, c ta responsabilité que tous les clients puissent consommer ton service!

    moi ce que je te dis c qu'on a pas tous un parser wsdl dans la tete
    De quelle manière pourrais je m'assurer que mon WebService est bel et bien accessible par n'importe quel client? La seule solution que je vois serait de le garantir en écrivant moi même des programmes exploitants ce service dans différents langages, mais niveau C++ je ne suis pas vraiment "up to date". Voyez vous d'autres solutions?
    Je n'ai également pas vraiment compris la remarque sur le parser WSDL... si quelqu'un pouvait m'éclairer.

    RQ : Normalement les ws sont interopérables ( donc java - c++ c'est possible )mais j'ai pas testé
    Oui c'est bien ce qu'il me semblait, sinon je ne vois pas pourquoi les WS seraient basés sur XML. Cela dit quand on voit déja à quel point c'est "simple" d'utiliser un WS écrit en Java, avec un autre programme Java (obligation d'utiliser WSDL2Java), je me dis qu'un programmeur C++ va autant se prendre la tête alors que c'est censé être un mode de communication simple et universel

    Merci d'avance pour vos avis, et bonne journée à tous.

  8. #8
    Membre habitué
    Inscrit en
    Décembre 2002
    Messages
    186
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 186
    Points : 130
    Points
    130
    Par défaut
    je me permet de repondre a ma remarque en te citant

    quand on voit déja à quel point c'est "simple" d'utiliser un WS (...) c'est censé être un mode de communication simple et universel
    voila le probleme: si tu es une entreprise sérieuse, tu ne peux pas compter uniquement sur l'utilisation de JavaWSDL et d'une pincee de chance pour que ce soit interoperable, par ce que cette simplicité n'est que relative. En fait tout dépend du contexte dans lequel tu te place: java-java ou java-???, B2B ou intranet, sécure ou non...

    Par ce que si c cense etre interoperable, dans la pratique tu dois travailler un peu a la main ton wsdl généré pour le rendre vraiment interoperable

    et est ce que tu connais toutes les options de javawsdl (ou wscompile)?

    Donc le danger que je pensais mettre en évidence en te disant qu'on ne parle pas tous courament le wsdl, c que meme si ton wsdl généré parrait bien, utilise d'autres outils pour vérifier leur compatibilité

  9. #9
    Membre du Club
    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
    Points : 51
    Points
    51
    Par défaut
    Citation Envoyé par mauvais_karma
    je me permet de repondre a ma remarque en te citant

    quand on voit déja à quel point c'est "simple" d'utiliser un WS (...) c'est censé être un mode de communication simple et universel
    voila le probleme: si tu es une entreprise sérieuse, tu ne peux pas compter uniquement sur l'utilisation de JavaWSDL et d'une pincee de chance pour que ce soit interoperable, par ce que cette simplicité n'est que relative. En fait tout dépend du contexte dans lequel tu te place: java-java ou java-???, B2B ou intranet, sécure ou non...

    Par ce que si c cense etre interoperable, dans la pratique tu dois travailler un peu a la main ton wsdl généré pour le rendre vraiment interoperable

    et est ce que tu connais toutes les options de javawsdl (ou wscompile)?

    Donc le danger que je pensais mettre en évidence en te disant qu'on ne parle pas tous courament le wsdl, c que meme si ton wsdl généré parrait bien, utilise d'autres outils pour vérifier leur compatibilité
    Bonjour,
    Voilà qui est déja plus clair

    Le contexte est que je fournis des WebServices en les développant en Java sous WebObjects, et que ces derniers seront consommés par des programmes C++ que notre boite développe. Donc ça reste une interaction propre à notre entreprise. En revanche je ne suis pas chargé de ce qui se passe au niveau des programmes C++, donc je ne vois pas comment vérifier la compatibilité. Quels sont les autres outils que tu préconises pour vérifier l'interopérabilité?

Discussions similaires

  1. Demande d'avis sur un plan théorique (web service)
    Par leroimarco dans le forum PureBasic
    Réponses: 2
    Dernier message: 13/07/2011, 16h45
  2. [web service] pb interoperabilité?
    Par david42 dans le forum Services Web
    Réponses: 3
    Dernier message: 02/03/2004, 15h01
  3. [WebService]Fichier Java et WSDL associé pour Web Services
    Par P4_le_requin_breton dans le forum Services Web
    Réponses: 9
    Dernier message: 23/02/2004, 13h55
  4. [JBuilder][Web Services] à partir de quelle version?
    Par sicard_51 dans le forum JBuilder
    Réponses: 2
    Dernier message: 25/08/2003, 13h54
  5. [Kylix] problème web service kylix
    Par RezzA dans le forum EDI
    Réponses: 3
    Dernier message: 11/02/2003, 15h50

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