TP1 : Cré atin dé sérvicés Wéb avéc JAX-WS L bjéctif dé cé prémiér TP ést dé vus initiér a la cré atin ét au dé pliémént dés sérvicés wéb. Dans cé TP, vus alléz tut d abrd téstér dés sérvicés wéb éxistants. Ensuité, vus alléz dé cuvrir cmmént dé vélppér, dé plyér un sérvicé wéb simplé. Vus alléz appréndré a manipulér l API JAX-WS pur lé dé vélppémént dé Sérvicés Wéb a partir dé la platéfrmé dé dé vélppémént Java Nétbéans. Cé TP cmprté 3 partiés : 1. Tést dé sérvicés wéb éxistants 2. Pré séntatin dé l API JAX-WS 3. Dé vélppémént dé sérvicés Wéb avéc JAX-WS : Vus alléz suivré déux apprchés : uné apprché Bttm / Up ét uné apprché Tp / Dwn puis dé vélppér la partié cliénté d un Sérvicé Wéb. Intrductin Le cncept des services Web turne autur des tris acrnymes suivants : SOAP (Simple Object Access Prtcl) : il s'agit d'un prtcle d'échange de messages XML (requêtes et répnses) entre client et serveur. WSDL (Web Services Descriptin Language) est la descriptin au frmat XML des Web Services en précisant les méthdes puvant être invquées, leur signature et le pint d'accès (URL, prt, etc..). UDDI (Universal Descriptin, Discvery and Integratin) ést un standard dé fini par OASIS. Il dé finit la structuré d un annuairé dé sérvicés Wéb. Il furnit, au séin d uné architécturé SOA, un pint d accé s céntral aux cnsmmatéurs dé sérvicés, én léur pérméttant a la fis dé dé cuvrir la structuré dés fnctins éxpsé és par lés sérvicés ét l émplacémént physiqué dé cés sérvicés. I. Tester un Service Web existant Avant dé cré ér vtré prpré sérvicé wéb, vus alléz téstér lés sérvicés wéb dé ja éxistants ét dé plyé s sur dés prtails dé sérvicés wéb. Il éxisté diffé rénts prtails dé sérvicés wéb téls qué wébsérvicéx.nét 1, Titan 2, PrgrammabléWéb 3, étc. Vus puvéz téstér lés diffé rénts prtails én faisant uné réchérché dé sérvicés. Alléz sur lé sité : http://www.wébsérvicéx.nét Chisisséz un dés sérvicés wéb dispniblés par éxémplé Curréncy Cnvértr qui pérmét d avir lé taux dé cnvérsin dé dévisés. L adréssé suivanté : http://www.wébsérvicéx.nét/curréncycnvértr.asmx ést idéntifié é cmmé lé éndpint (lé pint d accé s) du sérvicé wéb. : Cmbién d Opé ratins snt gé ré és par lé sérvicé wéb? Cnfirméz cé nmbré d pé ratin én analysant l intérfacé WSDL dé déscriptin du sérvicé. 1 http://www.wébsérvicéx.nét 2 http://ccnt.zju.édu.cn:8080/ 3 http://www.prgrammabléwéb.cm/ sana.sellami@univ-amu.fr Page 1
Cliquéz sur lé lién asscié a l pé ratin CnvérsinRaté Téstéz l pé ratin én chisissant déux typés dé dévisés dé la listé furnié Expliquéz lé ré sultat bténu ét analyséz lés dcuménts SOAP d é changé éntré vtré navigatéur ét lé wéb sérvicé. Vus puvéz téstér d autrés sérvicés wéb par éxémplé un sérvicé wéb pur énvyér dés SMS. Tujurs sur listé wébsérvicéx : http://www.wébsérvicéx.nét/ws/wscatlist.aspx, cliquéz sur lé lién Cmmunicatins puis sur SéndSMSWrld. Vus puvéz téstér cé sérvicé én rémplissant lé frmulairé Tést prpsé. Vus puvéz vus énvyér un SMS, malhéuréusémént lé ré sultat méttra un cértain témps a vus parvénir (1 u 2 jurs). sana.sellami@univ-amu.fr Page 2
II. Présentatin de l API JAX-WS JAX-WS (Java API fr XML Web Services) est une API pur la créatin de Services Web. Elle fait partie de la platefrme Java EE de Sun Micrsystems. L impléméntatin JAX-WS est intégrée nativement à la JRE depuis la versin 6. JAX-WS utilise les anntatins intrduites dans Java SE 5 pur simplifier le dévelppement et le dépliement des services web clients. Il existe deux façns pur dévelpper un service web avec JAX-WS : Apprche Bttm / Up (à partir d un POJO (Plain Old Java Object)) Cré ér ét anntér un POJO Cmpilér, dé plyér ét téstér Lé dcumént WSDL ést autmatiquémént gé né ré Apprche Tp / Dwn (à partir d un dcument WSDL) Gé né ratin dés diffé réntés classés Java (JAXB ét squélétté du Wéb Sérvicé) én utilisant l util wsimprt Cmplé tér lé squélétté dé classé dé l implé méntatin Cmpilér, dé plyér ét téstér L avantagé d un dévélppémént avéc l API JAX-WS est sa flexibilité, sn efficacité au niveau du dévelppement : n ne multiplie pas les fichiers de cnfiguratin grâce aux anntatins. Mais surtut, n né manipulé plus la structuré dés fichiérs XML (lés méssagés) qué l n sit sur lé client u le serveur. Les services web suivent le paradigme de facilité de dévelppement de Java EE 6 ét n bligént pas à écriré lé mindré cde WSDL u SOAP. Un service web est simplement un POJO annté qui dit être déplyé dans un cnteneur de service web. Cette API est ntamment lcalisée dans le package javax.jws. Si vus uvrez la Javadc sur ce package, vus vus apercevrez qu'elle est cnstituée d'un certain nmbre d'anntatins (javax.jws.webservice et javax.jws.webmethd ntamment). Cela induit le fait que la nuvelle API de mise en euvre de services Web est très simple d'empli : il suffit de cder une classe Java traditinnelle et de lui adjindre un certain nmbre d'anntatins pur qualifier les méthdes qui sernt accessibles via l'extérieur. La visin du dévelppement du service u du client utilisatéur du sérvicé ést céllé d un simplé appél d uné méthdé pssédant dés paramètrés. III. Dévelppement de services Web avec JAX-WS Envirnnémént dé dé vélppémént : IDE Nétbéans JDK 6 u 7 Sérvéur Glassfish 1. Dévelppement cté Serveur 1.1 Apprche Bttm/ Up u ascendante Objectif : Dé criré un Wéb Sérvicé a partir d uné intérfacé Java, implé méntér lé Wéb Sérvicé, dé plyér sus Glassfish, téstér lé Wéb Sérvicé. sana.sellami@univ-amu.fr Page 3
Vus alléz suivré lés é tapés suivantés : Créatin d un service Web à partir d une classe Java : Cré ér un nuvéau prjét : Java Wéb Wéb Applicatin qué vus nmméréz CalculWSApplicatin ét vus sé léctinnéz lé sérvéur Glassfish. Cré ér un nuvéau sérvicé wéb «CalculWS» dans lé packagé «rg.mé.calcul» ét sé léctinnér «Implement Web Service as a Stateless Sessin Bean». Vus remarquez que des anntatins nt été ajutées. Définir une pératin : Vus allez définir une pératin pur le service que vus venez de créer. Cette pératin permet de calculer la smme de deux entiers reçus du client. Vus allez sélectinner le mde de visualisatin «design» cmme illustré à la figure suivante. Pur ajutér uné pé ratin, sit vus cliquéz sur «Add Opératin» sit vus cliquez butn drit sur (Web ServicesCalculService) et sélectinner add Operatin. L pératin «smme» prend deux entiers en entrée et returne un entier. Vus puvez supprimer l pératin hell. Révénir au mdé «Surcé». Qué rémarquéz-vus? Mdifiér la mé thdé smmé pur qu éllé réturné la smmé dés 2 éntiérs. Dépliement et test du Service Web : Cliquéz butn drit sur lé prjét ét chisisséz «déply» Ensuité, butn drit sur lé sérvicé (qui sé truvé sus Wéb Sérvicés) Tést Wéb Sérvicé Etant dnné qué vus avéz cré é uné applicatin Wéb sur un sérvéur Glassfish, uné pagé wéb séra uvérté. Vus puvéz éntrér 2 éntiérs ét téstér vtré sérvicé. sana.sellami@univ-amu.fr Page 4
Tester le service web avec SOAPUI : Mainténant qué vus avéz cré é vtré sérvicé, vus alléz lé téstér én utilisant SapUI. SapUI 4 ést un util dé tést fnctinnél Opén Surcé utilisé principalémént pur 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 autmatisér dés tésts, dé téstér la mnté é én chargé ét dé visualisér lés méssagés sap. Il éxisté bién su r d autrés utils pérméttant lé tést dé wéb sérvicés (Ratinal Téstér, SOATést, Visual Studi ). Vus puvéz té lé chargér l éxé cutablé dé SapUI 5 mais il ést aussi inté grablé dans Eclipsé ét NétBéans én installant lés plugins dé dié s. Vus alléz suivré lés é tapés suivantés : Téléchargement du plugin SOAPUI pur Netbeans: Té lé chargér lé plugin SOAPUI pur Nétbéans a l adréssé suivanté http://www.sapui.rg/ide-plugins/ en cliquant sur Dwnlads ét l installér. Installatin du plugin : Sus Nétbéans, allér sur MénuTlsPlugins. Ensuité, vus alléz sur l nglét Dwnladéd ét cliquéz sur «Add Plugins». Sé léctinnéz lé fichiér nbm qué vus avéz té lé chargé. Sé léctinnéz lé butn "Install" én bas, NétBéans va installér lé plugin. Si vus avéz lé méssagé suivant «Sme plugins require plugin rg.netbeans.libs.cmmns_lgging t be installed» alrs vus puvéz installér lé plugin né céssairé én cliquant sur lé lién suivant http://dlc.sun.cm.édgésuité.nét/nétbéans/updatés/7.0.1/uc/final/distr ibutin/mdulés/idé/rg-nétbéans-libs-cmmns_lgging.nbm. Vé rifiéz qué lé plugin ést bién installé én cliquant sur l nglét «Installéd». Vus vérréz é galémént apparaitré dans lé ménutls «sapui». Créatin d un prjet SOAPUI : Cré éz un nuvéau prjét SOAPUI qué vus nmméréz «Smmé» a l'aidé du ménu "FileNew Prject SOA Web Service Testing Prject. Ajutéz l URL pur lé WSDL qué vus avéz dé ja gé né ré. Créatin de tests : Cré éz dés tésts én cliquant sur Génératé TéstSuité. Lé lgiciél va chérchér tutés lés infrmatins dans lé WSDL. Vé rifiéz qué «Oné TéstCasé fr éach pératin» ést bién sé léctinné ét cliquér sur OK. Lé TéstCasé va cnténir un scé nari dé tésts. Test du service web : Vus alléz dé finir lés é tapés dé tést (Tést Stéps), én faisant clic drit sur vtré TéstCaséAdd StépTést Réquést. L util va alrs cré ér un squélétté dé réqué té. Un Tést Casé sapui (cas dé tést) éxé cuté chaqué réqué té qu il cntiént. 4 http://www.sapui.rg/ 5 http://surcefrge.net/prjects/sapui/files/sapui/4.5.2/ sana.sellami@univ-amu.fr Page 5
Plus gé né ralémént, un Tést Casé sapui éxé cuté chaqué é lé mént, appélé é tapés (Stép), sé quéntiéllémént. Exécutin du test : Vus alléz téstér la mé thdé smmé dé vtré sérvicé é tant dnné qué c ést la séulé mé thdé éxistanté. Ajutéz lés valéurs manquantés ét lancéz lé tést én cliquant sur la flé ché vérté «Submit Réquést t spécifiéd éndpint URL». Vus avéz la ré pnsé du sérvéur. Vus puvéz dé finir plusiéurs tésts par éxémplé pur lés sérvicés wéb éxistants par éxémplé dans lé sité suivant https://wiki.w2.rg/frascati/wiki.jsp?pagé=sérvicédiréctry. 1.2 Dévelppement d un service web avec JAX-WS : Apprche Tp/Dwn u descendante Objectif : Gé né rér lés artifacts 6 d un Wéb Sérvicé a partir d uné déscriptin WSDL, implé méntér lé Wéb Sérvicé, dé plyér sus Glassfish, téstér lé Wéb Sérvicé, wsimprt. Dans cétté sécndé apprché, vus alléz dé vélppér un Sérvicé Wéb a partir dé sa déscriptin WSDL. Pur céla, vus alléz vus basér sur la déscriptin WSDL du Sérvicé Wéb bténué a la fin dé l apprché Bttm Up. Cré éz un nuvéau prjét dé typé «Wéb Applicatin» qué vus nmméréz «CalculWSApplicatin2». Ajutéz un nuvéau fichiér Filénéw FiléWéb SérvicésWéb Sérvicé frm WSDL qué vus nmméréz «CalculWSImpl» dans lé packagé «rg.mé.calcul2» Dans lé champ Séléct Lcal WSDL Filé r Entér WSDL URL, saisir l URL du WSDL gé né ré lrs dé la prémié ré partié. L util analysé lé WSDL ét prpsé dé chisir lé prt, sé léctinnér célui par dé faut. Un énsémblé dé classés ést gé né ré par l util wsimprt. En éffét, wsimprt ést un util dé cnvérsin WSDL vérs Java. Il prduit dés classés ét dés intérfacés Java a partir du cdé WSDL : Uné intérfacé CalculWS.java qui crréspnd a la répré séntatin Java annté é du fichiér WSDL pur lé sérvicé wéb. La classé CalculWS_Service.java cmprté tutés lés infrmatins d accé s au sérvicé, ntammént lé lién sur l url. Uné fabriqué ObjectFactry pur cré ér lés déux classés Smme ét SmmeRespnse. Gra cé aux anntatins JAXB 7, cés classés gé né rént lés méssagés XML. Cés classés né divént pas é tré mdifié és puisqu éllés snt gé né ré és autmatiquémént. Séulé la classé «CalculWSImpl» péut l é tré. Ellé crréspnd a la classé implé méntant lé cmprtémént du Sérvicé Wéb. Ré utiliséz lé cdé dé la prémié ré partié pur cmplé tér cétté classé. 6 Un artifact est cmpsé de l'ensemble des dcuments nécessaires à un service web. Nus puvns citer par exemple le dcument WSDL u encre les classes Java qui frmernt les messages SOAP d'échanges XML. 7 JAXB (Java Architecture fr XML Binding) est une API qui furnit un ensemble d interfaces et de classes que les applicatins utilisent pur prduire un schéma XML, générer les classes Java u des dcuments XML. JAX- WS s appuie sur JAXB pur tut ce qui cncerne la crrespndance entre dcuments XML et bjets Java. sana.sellami@univ-amu.fr Page 6
Faités un «Cléan and Build» (s assurér qu il n y a aucuné érréur) ét faités un «Déply». Cmparéz lé WSDL bténu a la prémié ré partié dé cé tp avéc célui bténu dans cétté sécndé partié. Snt-ils idéntiqués? 1.3 Quelle apprche suivre? Lrsqué vus dé vélppéz un sérvicé wéb, vus avéz la pssibilité dé partir d'un cdé Java (bttm-up), u dépuis lé cntrat (WSDL) qui dé finit vtré sérvicé (tp-dwn). S'il s'agit d'un nuvéau sérvicé (pas dé cntrat éxistant), l'apprché bttm-up ést lé chémin lé plus rapidé, vus n'avéz bésin qué d'ajutér quélqués anntatins a vs classés pur bténir un sérvicé pé ratinnél. Tutéfis, si vus dé vélppéz un sérvicé avéc un cntrat dé ja dé fini, il ést béaucup plus simplé d'utilisér l'apprché tp-dwn, dépuis l'util furni par vtré framéwrk (é.g wsimprt) qui va gé né rér lé cdé annté pur vus. 2. Dévelppement cté Client Lé dé vélppémént du cliént cnsisté a appélér dés pé ratins du Sérvicé Wéb a partir d un prgrammé Java. Ainsi vus alléz manipulér uniquémént du cdé Java. Lé cliént péut é tré uné applicatin dé vélppé é : Java SE (Swing, ) Java EE avéc lés EJB (JSP, Sérvlét, ) Lé dé vélppémént du cliént suit uné prcé duré similairé a l apprché Tp / Dwn u lé pint dé dé part ést lé dcumént WSDL. Vus rémarquéréz qué l util wsimprt séra utilisé dé manié ré éxplicité pur la gé né ratin du squélétté du sérvicé Wéb (gé né ratin dés classés lié és a JAXB (Java Architécturé fr XML Binding,) qui ést uné API pérméttant dé simplifiér lés prcéssus dé transfrmatin d bjéts Java én fichiér XML, ét dé fichiér XML én bjéts Java, gé né ratin dé classés Sérvicés Wéb). a) Dévelppement d une applicatin Java Standard Cré ér uné applicatin Java Standard qué vus nmméréz CalculWS_Cliént_Applicatin Faités un clic drit sur CalculWS_Cliént_ApplicatinNéwWéb Sérvicé Cliént. Sé léctinnér lé prjét CalculWSApplicatin cmmé surcé WSDL. Un énsémblé dé classés ést gé né ré par l util wsimprt. Céla vus rappéllé quélqué chsé? Dans la féné tré Prjécts, un nuvéau sérvicé Cliént apparaît avéc un nœud pur la mé thdé «smmé» qué vus avéz cré é é. Faités dublé clic sur la classé main ét faités un drag dé la mé thdé smmé apré s la mé thdé main. Vus puvéz é galémént fairé un clic drit sur l é ditéur Insért Cdé Call Wéb Sérvicé Opératin. sana.sellami@univ-amu.fr Page 7
Dans la mé thdé main, rémplacér lé cmméntairé TODO avéc un cdé qui pérmét d initialisér lés valéurs dés variablés, d appélér la mé thdé «smmé» ét d affichér lé ré sultat. Exé cutér lé prgrammé (Run du prjét) b) Dévelppement d un client Swing Cét éxércicé cnsisté a appélér lé Sérvicé Wéb dé fini dans l apprché Bttm/Up du dé vélppémént cté sérvéur. Un cliént lurd dé fini via uné intérfacé graphiqué Swing ést utilisé pur invquér l pé ratin smmér. Cré ér un nuvéau prjét Java Applicatin «CalculWSSwing» Cré ér un JFramé Frm qué vus nmméréz «MyJFramé». Cré ér l intérfacé graphiqué suivanté pérméttant dé saisir lés valéurs dés éntiérs ét d affichér léur smmé én cliquant sur lé butn calculér. Cré ér un Sérvicé Wéb Cliént ét suivré lés mé més é tapés qué pur lé dé vélppémént d uné applicatin Java Standard. Implé méntér lés mé thdés né céssairés pur lé fnctinnémént dé l intérfacé. sana.sellami@univ-amu.fr Page 8