Services Web SOAP
Transcription
Services Web SOAP
M2 SIR 2016-2017 TP1 : Création dé sérvicés Wéb SOAP Objectif du TP L’objéctif dé cé prémiér TP ést dé vous initiér a la création ét au déploiémént dés sérvicés wéb SOAP. Dans cé TP, vous alléz tout d’abord téstér dés sérvicés wéb éxistants. Ensuité, vous alléz découvrir commént dévéloppér, déployér un sérvicé wéb simplé. Vous alléz appréndré a manipulér l’API JAX-WS pour lé dévéloppémént dé Sérvicés Wéb a partir dé la platéformé dé dévéloppémént Java Nétbéans. Cé TP comporté 2 partiés : 1. Récupération dé WSDL gracé a uné réquété HTTP ét Tést dé sérvicés wéb éxistants avéc SOAPUI. 2. Création dé sérvicés : Un sérvicé Wéb SOAP én Java ét un sérvicé a partir d’un fichiér WSDL. Environnement de travail Environnémént dé dévéloppémént : IDE Nétbéans ou Eclipsé JDK 7 ou 8 Sérvéur Glassfish I. Test de services Web 1. Exemple d’une requête http pour récupérer un WSDL L’objéctif ést dé vous montrér commént on péut récupérér un fichiér WSDL séulémént avéc uné réquété HTTP. Pour céla, il ést possiblé d’utilisér l’éxténsion dé Firéfox : Postér. Vous alléz : téléchargér lé modulé Postér sur Outils Postér ét vous complétéréz lé formulairé avéc l’URL suivanté : http://wébsérvicés.amazon.com/AWSECommércéSérvicé/AWSECommércéSérvicé.wsdl Cliquér sur GET. Lé fait dé cliquér sur GET provoqué l’énvoi d’uné réquété HTTP én utilisant la méthodé GET. Uné nouvéllé fénétré s’ouvré avéc la réponsé a la réquété GET. Lés informations sont rénvoyéés au format XML ét réprésénté la définition WSDL du Wéb sérvicé Amazon. Examinér lé conténu 2. Tester un service Web existant Avant dé créér votré propré sérvicé wéb, vous alléz téstér lés sérvicés wéb déja éxistants ét déployés sur dés portails dé sérvicés wéb. Il éxisté différénts portails/annuairés dé sérvicés wéb1 téls qué wébsérvicéx.nét2, Titan3, ProgrammabléWéb4, WébsérvicéList5, PublicAPIs6, Algorithmia7, étc. Vous pouvéz téstér lés différénts portails én faisant uné réchérché dé sérvicés. 1 http://nordicapis.com/api-discovery-11-ways-to-find-apis/ http://www.wébsérvicéx.nét 3 http://ccnt.zju.édu.cn:8080/ 2 1 M2 SIR 2016-2017 Allér sur lé sité : http://www.wébsérvicéx.nét Choisir par éxémplé la catégorié «Utilitiés» ét un dés sérvicés wéb disponiblés par éxémplé Global Wéathér. Qué fait cé sérvicé ? L’adréssé suivanté : http://www.wébsérvicéx.nét/globalwéathér.asmx ést idéntifiéé commé lé éndpoint (lé point d’accés) du sérvicé wéb. : Combién d’Opérations sont géréés par lé sérvicé wéb ? Confirmér cé nombré d’opération én analysant l’intérfacé WSDL dé déscription du sérvicé. Téstér lé sérvicé. Expliquér lé résultat obténu ét analyséz lés documénts SOAP d’échangé éntré votré navigatéur ét lé wéb sérvicé. Vous pouvéz téstér d’autrés sérvicés wéb par éxémplé un sérvicé wéb pour énvoyér dés SMS. Toujours sur listé wébsérvicéx : cliquér sur la catégorié « Méssaging » puis sur SéndSMSWorld. Vous pouvéz téstér cé sérvicé én rémplissant lé formulairé Tést proposé. Vous pouvéz vous énvoyér un SMS, malhéuréusémént lé résultat méttra un cértain témps a vous parvénir (1 ou 2 jours). II. SOAPUI SoapUI89 ést un outil dé tést fonctionnél Opén Sourcé utilisé principalémént pour téstér lés sérvicés Wéb basé sur SOAP, REST ét aussi lés sérvicés HTTP. Il pérmét dé débuggér, d’éfféctuér dés tésts unitairés, d’automatisér dés tésts, dé téstér la montéé én chargé ét dé visualisér lés méssagés SOAP. Il éxisté bién sur d’autrés outils pérméttant lé tést dé wéb sérvicés commé Rational Téstér, Apache JMeter10, étc. Vous pouvéz téléchargér l’éxécutablé dé SoapUI11 mais il ést aussi intégrablé dans Eclipsé ét NétBéans én installant lés plugins dédiés. Vous alléz suivré lés étapés suivantés : Etape 1 : Installation du plugin Sous Nétbéans, allér sur MénuToolsPlugins. Ensuité, vous alléz sur l’onglét Downloadéd ét cliquéz sur « Add Plugins ». Séléctionnéz lé fichiér nbm qué vous avéz téléchargé. Séléctionnéz lé bouton "Install" én bas, NétBéans va installér lé plugin. Vérifiéz qué lé plugin ést bién installé én cliquant sur l’onglét « Installéd ». Vous vérréz égalémént apparaitré dans lé ménutools « soapUI ». Etape 2 : Scénario de test pour un service météorologique Création d’un projet SOAPUI : Crééz un nouvéau projét SOAPUI qué vous nomméréz «Météo » a l'aidé du ménu "FileNew Project SOA Web Service Testing Project". http://www.programmabléwéb.com/ http://www.webservicelist.com/ 6 https://www.publicapis.com/ 7 https://algorithmia.com/algorithms 8 http://www.soapui.org/ 9 http://www.guru99.com/introduction-to-soapui.html 10 http://jmeter.apache.org/ 11 http://sourceforge.net/projects/soapui/files/soapui/4.5.2/ 4 5 2 M2 SIR 2016-2017 Ajoutéz l’URL pour lé WSDL du sérvicé Météo) « Global Wéathér ». Cochér « Génératé TéstSuité ». Lé logiciél va chérchér toutés lés informations dans lé WSDL. Uné fois lé projét créé, SOAP-UI affiché toutés lés opérations disponiblés ét créé un squélétté dé chaqué réquété. Pour chaqué projét, vous pouvéz créér plusiéurs tést suités. Pour chaqué Tést Suité, vous pouvéz avoir plusiéurs tést casés ét pour chaqué tést casés plusiéurs étapés péuvént léur étré associéés12. Vérifiér qué « Oné TéstCasé for éach opération » ést bién séléctionné ét cliquér sur OK. Lé TéstCasé va conténir un scénario dé tésts. Etape 3 : Construction des tests fonctionnels Un Tést Casé soapUI (cas dé tést) éxécuté chaqué réquété qu’il contiént. Plus généralémént, un Tést Casé soapUI éxécuté chaqué élémént, appélé “étapés” (Stép), séquéntiéllémént. Vous alléz téstér la méthodé « GétCitiésByCountry» dé votré sérvicé. Ajoutér la valéur manquanté ét lancéz lé tést én cliquant sur la fléché vérté « Submit Réquést to spécifiéd éndpoint URL ». Vous avéz la réponsé du sérvéur. A cé stadé, séulé l'éxécution dé l'opération ést vérifiéé. Cliquér sur l’onglét Raw dé la réponsé ét intérprétér lé résultat. Ajoutér uné nouvéllé assértion « Contains » qui pérmét dé vérifiér si uné valéur donnéé ést présénté dans la réponsé. Téstér. Vous pouvéz définir dé nouvéaux tésts13 ét d’autrés sérvicés commé « convérsion raté ». Vous pouvéz suivré lé tuto suivant : http://www.guru99.com/soapui-tutorial-project- testsuite-testcase.html. 12 http://www.guru99.com/soapui-installation-configuration.html 3 M2 SIR 2016-2017 Création de services Web III. 1. Création de services SOAP en Java La concéption d’un sérvicé Wéb nécéssité lés étapés suivantés : 1. Définir ét créér un sérvicé Wéb 2. Publiér lé sérvicé Wéb sur lé sérvéur d’application Glassfish (sérvéur dé production) 3. Utilisér un sérvicé Wéb én créant un cliént. 1.1 Création du serveur et du service Créér un nouvéau projét : Java EE EJB Modulé qué vous nomméréz « CréationCalculWS « ét vous séléctionnéz lé sérvéur Glassfish. Créér un nouvéau sérvicé wéb « CalculWS » dans lé packagé « org.mé.calcul ». Notéz d’abord lés packagés javax.jws.*, qui sérviront pour lés annotations dés classés, méthodés ét paramétrés. Vous rémarquéz qué dés annotations ont été ajoutéés (@WébSérvicé, @WébMéthod ét @WébParam). Définir une opération : Vous alléz définir uné opération pour lé sérvicé qué vous vénéz dé créér. Cétté opération pérmét dé calculér la sommé dé déux éntiérs. Vous alléz séléctionnér lé modé dé visualisation « désign » commé illustré a la figuré suivanté. Pour ajoutér uné opération, soit vous cliquéz sur « Add Opération » soit vous cliquéz bouton droit sur (Wéb SérvicésCalculSérvicé) ét séléctionnér add Opération. L’opération « sommé » prénd déux éntiérs én éntréé ét rétourné un éntiér. Vous pouvéz supprimér l’opération héllo. Révénir au modé « Sourcé ». Qué rémarquéz-vous ? Modifiér la méthodé sommé pour qu’éllé rétourné la sommé dés 2 éntiérs. 1.2 Déploiement et test du Service Web Cliquér bouton droit sur lé projét ét choisir « déploy ». Dans l’onglét Glassfish du projét, a la fin dé l’opération dé déploiémént, apparaît l’adréssé intérnét ou lé sérvicé Wéb ést disponiblé. 4 M2 SIR 2016-2017 Lancér un navigatéur intérnét avéc l’adréssé : http://localhost:.../ CalculWS / CalculWS ?téstér ou bién cliquér sur lé bouton droit sur lé sérvicé (qui sé trouvé sous Wéb Sérvicés) Tést Wéb Sérvicé. Vérifiér si la méthodé fonctionné corréctémént én saisissant lés valéurs dés déux paramétrés dé la fonction. Etant donné qué vous avéz créé uné application Wéb sur un sérvéur Glassfish, uné pagé wéb séra ouvérté. Vous pouvéz éntrér 2 éntiérs ét téstér votré sérvicé. 1.3 Vérification de la disponibilité du service sur le serveur Vérifiér la disponibilité du sérvicé én allant sur l’onglét sérvéur ét én éditant la listé dés applications disponiblés. L’onglét sur la partié gauché dé l’énvironnémént Nétbéans constitué un raccourci vérs lé sérvéur d’applications. Fairé clic droit sur lé sérvéur ét accédér a la consolé d’administration dé glassfish (Viéw Domain Admin Consolé). Choisir la listé dés applications déployéés. Qu’ést-cé qué vous obténéz ? Séléctionnér « Afficher point d’extrémité », quéllés informations sont affichéés ? 2. Création d’un client Lé dévéloppémént du cliént consisté a appélér dés opérations du Sérvicé Wéb a partir d’un programmé Java. Ainsi vous alléz manipulér uniquémént du codé Java. Lé cliént péut étré uné application dévéloppéé : Java SE (Swing, …), Java EE avéc lés EJB (JSP, Sérvlét, …) Vous alléz dévéloppér un cliént Java commé suit : Créér uné application Java Standard qué vous nomméréz CalculWS_Cliént_Application Afin dé générér la couché SOAP dé communication, il faut ajoutér un sérvicé Wéb cliént. Fairé clic droit sur CalculWS_Cliént_ApplicationNéwWéb Sérvicé Cliént. Séléctionnér lé projét CalculWSApplication commé sourcé WSDL ou bién saisir diréctémént l’adréssé du sérvicé Wéb dans la partié WSDL URL. Un énsémblé dé classés ést généré par l’outil wsimport. En éffét, a partir du fichiér WSDL du sérvicé, Nétbéans a généré dé nombréusés classés, qui ont été placéés dans lé répértoiré Génératéd-Sourcés. En éffét, wsimport ést un outil dé convérsion WSDL vérs Java. Il produit dés classés ét dés intérfacés Java a partir du codé WSDL : o Uné intérfacé CalculWS.java qui corréspond a la répréséntation Java annotéé du fichiér WSDL pour lé sérvicé wéb. o La classé CalculWS_Service.java comporté toutés lés informations d’accés au sérvicé, notammént lé lién sur l’url. o Uné fabriqué ObjectFactory pour créér lés déux classés Somme ét SommeResponse. Gracé aux annotations JAXB14, cés classés générént lés méssagés XML. o Cés classés né doivént pas étré modifiéés puisqu’éllés sont généréés automatiquémént. 14 JAXB (Java Architecture for XML Binding) est une API qui fournit un ensemble d’interfaces et de classes que les applications utilisent pour produire un schéma XML, générer les classes Java ou des documents XML. JAXWS s’appuie sur JAXB pour tout ce qui concerne la correspondance entre documents XML et objets Java. 5 M2 SIR 2016-2017 o Un pséudo-répértoiré Web Service References a été ajouté, conténant la référéncé du Sérvicé Wéb. Nous l’utilisérons par la suité. Lés fichiérs WSDL ét lé schéma dés typés du Sérvicé Wéb ont été placés dans lé répértoiré META-INF. Fairé un doublé clic sur votré classé Cliént ét faités un drag dé la méthodé sommé aprés la méthodé main. Vous pouvéz égalémént fairé un clic droit sur l’éditéur Insert Code Call Web Service Operation. Nétbéans va générér lé codé nécéssairé a l’invocation. Qué contiént cé codé ? Placér dans lé main un appél a la fonction, initialisér lés variablés, rénséignér lé catch ét affichér lé résultat dans la consolé. Compilér ét téstér. Téstér Mainténant votré sérvicé avéc SOAPUI. 3. Création d’un fichier WSDL Vous alléz créér un fichiér WSDL qui décrit un sérvicé Wéb. Plusiéurs outils pérméttént la création dé fichiérs WSDL : AltovaXMLSpy, l’IDE Eclipsé, étc. Vous alléz sous Nétbéans : Ajoutér lé plugin suivant : http://déadlock.nétbéans.org/hudson/job/xml/lastSuccéssfulBuild/artifact/build/u pdatés/updatés.xml én cliquant sur : toolsPlugins Séttings pour ajoutér lé plugin Cliquér sur Availablé Plugins, fairé uné réchérché dé « XML tools » ét séléctionnér lé plugin qué vous vénéz d’ajoutér. Installér lé plugin. Créér un fichiér dé typé WSDL Documént qué vous nomméréz « CalcSérvicé » dans un projét Wéb Application. Vous dévéz définir lé targét naméspacé. Cé sérvicé va possédér uné séulé opération qui consisté a réalisér la sommé dé déux éntiérs. Ajoutér un nouvéau fichiér Filénéw FiléWéb SérvicésWéb Sérvicé from WSDL qué vous nomméréz « CalculWSImpl » dans lé packagé « org.mé.calcul2 » Séléctionnér lé fichiér WSDL qué vous vénéz dé créér. Générér lé cliént. Qué pénséz-vous dé cétté méthodé ? 6