Doc développeur SOMMAIRE Doc developpeur ........................................................................................................................ 1 SOMMAIRE .............................................................................................................................. 2 I. Outils Utilisés ................................................................................................................. 2 II. Installer le plugin WTP pour Eclipse ............................................................................. 2 III. Créer un Web Service avec Axis sous Eclipse ............................................................... 7 IV. Déployer un Web Service sur un serveur Tomcat ........................................................ 10 Glossaire ................................................................................................................................... 12 Apache Axis : ................................................................................................................... 12 SOAP :.............................................................................................................................. 12 Web Service : ................................................................................................................... 12 I. Outils Utilisés Pour le développement des Web Services : o Serveur HTTP Apache Tomcat version >= 5.5 o IDE Eclipse version 3.2 Plugin Web Tools Platform (WTP) version 1.5 (avec la librairie Apache Axis 1.3 intégré à WTP) II. Installer le plugin WTP pour Eclipse Web Tools Platform (WTP) est une extension pour l’IDE Eclipse. Cette extension est orientée pour le développement Web J2EE (Servlet / JSP / EJB / Web Services). Ce plugin intègre notamment la librairie Apache Axis qui permet de développer et déployer des Web Services en Java. Site officiel de WTP : http://www.eclipse.org/webtools/ Site officiel d’axis : http://ws.apache.org/axis/ 1. Dans la barre de menu, aller dans : Help > Software Updates > Find and Install… 2. Sélectionner “Search for new features to install”, puis cliquer sur le bouton “Next”. 3. Si le site Calisto (ou Calisto Discovery Site) n’est pas présent dans la liste de choix, ajouter le en cliquant sur le bouton “New Remote Site”, puis saisir l’url suivant : http://download.eclipse.org/webtools/updates/ 2 / 12 4. Cocher les cases des deux lignes Callisto et The Eclipse Project Updates, puis cliquer sur le bouton “Finish”. 3 / 12 5. Après avoir sélectionné les sites miroirs, cocher dans la liste de choix la ligne The Eclipse Project Updates, ainsi que la ligne Callisto > Web and J2EE Development. 4 / 12 6. Ensuite cliquer sur le bouton “Select Required”, pour auto-sélectionner les composants nécessaires au bon fonctionnement des plugins précédemment cochés. 7. Ensuite cliquer sur le bouton “Next”. 8. À la page suivante, accepter les termes du contrat, puis cliquer à nouveau sur le bouton “Next” pour lancer le téléchargement des composants à installer (cette étape peut prendre plusieurs minutes). 9. Une fois tous les éléments téléchargés, cliquer sur le bouton “Install All” pour lancer les installations automatiquement. Une fois fini, redémarrer Eclipse. 5 / 12 10. Ensuite, retourner dans la barre de menu : Help > Software Updates > Find and Install… 11. Sélectionner “Search for new features to install”, puis cliquer sur le bouton “Next”. 12. Cocher la ligne “Web Tools Platform (WTP) Updates”, puis cliquer sur le bouton “Finish”, sélectionner le site miroir. Cocher à nouveau la ligne “Web Tools Platform (WTP) Updates”, puis cliquer sur le bouton “Next”. 6 / 12 13. À la page suivante, accepter les termes du contrat, puis cliquer à nouveau sur le bouton “Next” pour lancer le téléchargement des composants (cette étape peut prendre plusieurs minutes). 14. Une fois tous les éléments téléchargés, cliquer sur le bouton “Install All” pour lancer les installations automatiquement. Une fois fini, redémarrer Eclipse. III. A ce stade la dernière version du plugin WTP pour Eclipse est installée et opérationnelle.Créer Pré-requis : un Web Service avec Axis sous Eclipse pour tester un Web Service localement, il sera nécessaire d’installer un serveur HTTP Java (par exemple Apache Tomcat) sur la machine, ainsi que le plugin Eclipse Web Tools Platform (WTP). 1- Créer un « Web project » a. Menu : File > New > Project… > Web > Dynamic Web Project ; b. Remplir le champ « Project name » c. Sélectionner un serveur Web Java dans le champ « Target Runtime » ou Si un serveur Web n’est pas présent : Cliquer sur le bouton « New… » pour rajouter un nouveau : 7 / 12 i. sélectionner le serveur de votre choix (dans notre cas Apache > Apache Tomcat 5.5), puis cliquer sur le bouton « Next »;; ii. Remplir le champ « Tomcat installation directory » (par exemple : C:\Program Files\Apache Software Foundation\Tomcat 5.5), puis cliquer sur le bouton « Finish » ; d. Cliquer sur le bouton « Finish » (et refuser l’ouverture perspective J2EE). 2- Écrire les classes Java dans le dossier « src », en respectant un typage des variables d’entrées et de sorties qui soit compatible SOAP. Au sein des méthodes des classes, le typage des variables est libre, car non traité directement par le protocole SOAP. Type de variable Java compatible SOAP : SOAP JAVA xsd:base64Binary xsd:boolean xsd:byte xsd:dateTime xsd:decimal xsd:double xsd:float xsd:hexBinary xsd:int xsd:integer xsd:long xsd:QName xsd:short xsd:string byte[] boolean byte java.util.Calendar java.math.BigDecimal double float byte[] int, Integer java.math.BigInteger long javax.xml.namespace.QName short java.lang.String xsd:complexType Object, Object[] Les collections (Vector, ArrayList, LinkedList, HashMap…) ne sont pas compatibles avec le protocole SOAP. Il est nécessaire d’utiliser un tableau d’objets JavaBeans (Object[]). On parle alors de type complexe (xsd:complexType). Les types complexes doivent être constitués de classes respectant le formalisme JavaBean. Conventions JavaBean : i. La classe doit être serializable pour pouvoir sauver et restaurer l'état d'instances de cette classe ; ii. Doit posséder au moins un constructeur sans argument ; iii. Les propriétés de la classe (variables d'instances) doivent être accessibles via des méthodes qui suivent également des conventions de nommage (exemple getVariable() , setVariable(type variable)…) ; iv. Doit contenir les méthodes d'interception d'événements nécessaires. (Plus d’informations : http://java.sun.com/products/javabeans/docs/spec.html) 3- Générer un Web Service avec Axis sous Eclipse : a. Avant de générer le service, il est possible de configurer le paramètre « scope » qui permet de définir, avec finesse, la portée des instances du Web Service. Il existe 3 sortes de portées : 8 / 12 i. Request : une instance du Web Service sera créée à chaque requête d’un client. ii. Session : une instance du service sera créée pour chaque client distinct accédant au Web Service. iii. Application : une seule instance du Web Service sera créée et utilisée pour traiter l’ensemble des requêtes des différents clients. Pour régler ce paramètre, aller dans le Menu : Window > Preferences... > Web Services > Axis Emitter et sélectionner la valeur du paramètre « scope » dans la liste déroulante « Add scope to deploy.wsdd ». Enfin valider et quitter le réglage des préférences. b. Aller sur la classe à publier, puis faite : Clique droit > Web Services > Create Web Service. c. Laisser les paramètres par défaut et cliquer sur « Next ». Si une erreur apparaît, votre classe (ou les classes liées) n’est pas compatible et/ou est susceptible de générer une erreur de compilation, retourner à l’étape 2. Attention, si l’avertissement persiste, redémarrer Eclipse et recommencer l’étape 3. d. Dans « Methods », cocher les méthodes à inclure au Web Service. Dans « Style and use », sélectionner RPC/encoded. Cliquer sur « Next ». Si le message d’alerte suivant apparaît « You have made a choice that may result in a Web service that does not comply with the WS-I Simple SOAP Binding Profile. », cliquer sur « Ignore ». e. Les fichiers de déploiement des Web Services (WSDL, WSDD…) sont maintenant générés. Cliquer sur « Start Server » pour lancer le serveur Web Tomcat. Puis cliquer sur « Next » pour déployer les Web Services sur le serveur Web Interne à Eclipse. Enfin cliquer sur « Finish ». 9 / 12 4- Tester un Web Service : a. Dans le dossier « / WebContent / wsdl / » du projet Web, aller sur le service à tester (service-a-tester.wsdl) et faire Clique droit > Web Services > Test with Web Services Explorer. b. Dans la fenêtre « Actions », cliquer sur une méthode, puis saisir les paramètres et cliquer sur le bouton « Go » du formulaire. c. Dans la fenêtre « Status », visualiser la réponse. Cliquer sur le lien « source » pour voir les messages SOAP échangés et ainsi observer les éventuelles erreurs. IV. Déployer un Web Service sur un serveur Tomcat Une fois un Web Service développé et testé sur le serveur HTTP interne d’Eclipse, il est possible de l’exporter pour le mettre en production sur un serveur final, dans notre cas Tomcat. 1. Pour cela, sous Eclipse, dans le cadre « Package Explorer », aller sur le projet contenant le Web Service, puis Clique droit > Export…, sélectionner Web > War et cliquer sur « Next » 2. À la page suivante, dans le champ « Web Module », saisir un nom pour le Web Service, puis sélectionner dans le champ suivant le chemin de destination pour l’archive WAR exportée. Enfin cliquer sur le bouton « Finish ». 3. Par un navigateur Internet, accéder à la page d’administration de Tomcat. 10 / 12 4. Aller dans le menu « Tomcat Manager », puis dans le formulaire « WAR file to deploy », sélectionner une archive WAR et cliquer sur le bouton « Deploy ». 5. Le Web Service déployé doit maintenant se retrouver dans la liste des applications, en haut de la page Web. Si l’application n’est pas démarrée, cliquer sur le lien « Démarrer ». Pour effacer le Web Service du serveur, il suffit de cliquer sur le lien « Undeploy » 11 / 12 Glossaire Apache Axis : Axis est un package qui fournit : Un environnement pouvant soit fonctionner comme un serveur SOAP indépendant soit comme un plug-in de moteurs de Servlet Java(en particulier Tomcat) ; Une API pour développer des services web SOAP RPC ou à base de messages SOAP ; Le support de différentes couches de transport : HTTP, FTP... ; La sérialisation/désérialisation automatique d'objets Java dans des messages SOAP ; Des outils pour créer automatiquement les WSDL correspondant à des classes Java ou inversement pour créer les classes Java sur la base d'un WSDL ; Des outils pour déployer, tester et monitorer des Web Services. La licence d'Axis est l’Apache Software License. SOAP : Simple Object Access Protocol (SOAP) est un protocole de RPC (Remote Procedure Call : appel de procédures à distance) orienté objet et bâti sur XML. Il permet la transmission de messages entre objets distants, ce qui veut dire qu'il autorise un objet à invoquer des méthodes d'objets physiquement situés sur une autre machine. Le transfert se fait le plus souvent à l'aide du protocole HTTP, mais peut également se faire par un autre protocole, comme SMTP. Le protocole SOAP est composé de deux parties : Une enveloppe, contenant des informations sur le message lui-même afin de permettre son acheminement et son traitement, Un modèle de données, définissant le format du message, c'est-à-dire les informations à transmettre. SOAP a été initialement défini par Microsoft et IBM, mais est devenu depuis une recommandation du W3C, utilisée notamment dans le cadre d'architectures de type SOA (Service Oriented Architecture) pour les Web Services. Web Service : Un service Web est un ensemble de protocoles et de normes informatiques utilisés pour échanger des données entre les applications de machines distantes. Les logiciels écrits dans divers langages de programmation et sur diverses plateformes peuvent employer des services Web pour échanger des données à travers des réseaux informatiques comme Internet. Cette interopérabilité est due à l'utilisation de normes ouvertes regroupées au sein du terme générique de SOA (Service Oriented Architecture ou Architecture orientée services). L'OSI et le World Wide Web Consortium (W3C) sont les comités de coordination responsables de l'architecture et de la standardisation des services Web. Pour améliorer l'interopérabilité entre les réalisations de service Web, l'organisation WS-I (Web Services Interoperability) a développé une série de profils pour faire évoluer les futures normes impliquées. 12 / 12