Serveur d'application Client HTML/JS. Apache Thrift Bootcamp



Documents pareils
Introduction à Eclipse

1. Installation d'un serveur d'application JBoss:

Tutoriel d installation de Hibernate avec Eclipse

IFT287 Exploitation de base de données relationnelles et orientées objet. Laboratoire Mon premier programme Java en Eclipse

Etude de cas : PGE JEE V2

TP JAVASCRIPT OMI4 TP5 SRC

Web Tier : déploiement de servlets

Création d un service web avec NetBeans 5.5 et SJAS 9

Application de lecture de carte SESAM-Vitale Jeebop

Utilisation de GCM (Google Cloud Messaging) pour Android. Partie préliminaire éventuelle : Création d'un AVD lisant GCM

NFA016 : Introduction. Pour naviguer sur le Web, il faut : Naviguer: dialoguer avec un serveur web

SHERLOCK 7. Version du 01/09/09 JAVASCRIPT 1.5

FORMATION PcVue. Mise en œuvre de WEBVUE. Journées de formation au logiciel de supervision PcVue 8.1. Lieu : Lycée Pablo Neruda Saint Martin d hères

Classe ClInfoCGI. Fonctions membres principales. Gestion des erreurs

Déploiement d'une application Visual Studio Lightswitch dans Windows Azure.

TD/TP 1 Introduction au SDK d Android

ECLIPSE ET PDT (Php development tools)

TP Composants Java ME - Java EE. Le serveur GereCompteBancaireServlet

TP1 : Initiation à Java et Eclipse

La base de données XML exist. A. Belaïd

Connexion à SQL Server 2005 à partir du serveur d application SJSAS 9 Utilisation d une interface JDBC

Assistance à distance sous Windows

Rafraichissement conditionné d'une page en.net

Construire des plug-ins pour SAS Management Console SAS 9.1

BIRT (Business Intelligence and Reporting Tools)

AFTEC SIO 2. Christophe BOUTHIER Page 1

JOnAS Day 5.1. Outils de développements

Approche Contract First

TP réseau Android. Bidouilles Tomcat. a) Installer tomcat : il suffit de dézipper l'archive apache-tomcat windowsx64.zip.

Projet Java EE Approfondi

Démonstration de la mise en cache via HTML 5 sur iphone

Optimiser pour les appareils mobiles

contact@nqicorp.com - Web :

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

A. Architecture du serveur Tomcat 6

TP JEE Développement Web en Java. Dans ce TP nous commencerons la programmation JEE par le premier niveau d une application JEE : l application web.

Page 1 sur 5 TP3. Thèmes du TP : l la classe Object. l Vector<T> l tutorial Interfaces. l Stack<T>

Architecture Orientée Service, JSON et API REST

Présentation du Framework BootstrapTwitter

Bases Java - Eclipse / Netbeans

TD Objets distribués n 3 : Windows XP et Visual Studio.NET. Introduction à.net Remoting

Utilisation de Jakarta Tomcat

< Atelier 1 /> Démarrer une application web

TP réseaux 4 : Installation et configuration d'un serveur Web Apache

Guide de déploiement

Connexions à un projet CVS via Eclipse en accès local et distant. 15 Mai 2007

Mise en place SSO. Mise en place SSO. 1. Installation de Tomcat sur le serveur OCR (Windows) 2. Ajout des librairies. by LegalBox

COMMENT INSTALLER LE SERVEUR QIPAIE

Groupe Eyrolles, 2005, ISBN :

Installer Enterprise Miner 5.1 en SAS environnement Windows

Microsoft Hosted Exchange 2010 DOCUMENT D EXPLOITATION

Séance d ED n 5 : HTML et JavaScript

1 / Introduction. 2 / Gestion des comptes cpanel. Guide débuter avec WHM. 2.1Créer un package. 2.2Créer un compte cpanel

Installation et prise en main

TAGREROUT Seyf Allah TMRIM

Eclipse atelier Java

Network Shutdown Module V3 Extension du Manuel Utilisateur pour architecture Virtualisée VMWare ESX Server 3, 3.5

Formation : WEbMaster

Documentation CAS à destination des éditeurs

Printer Administration Utility 4.2

Avant-propos 1. Avant-propos Organisation du guide À qui s'adresse ce guide?...4

MANUEL D INSTALLATION DES PRE REQUIS TECHNIQUES SALLE DES MARCHES V.7

SAP BUSINESSOBJECTS BUSINESS INTELLIGENCE SUITE 4.x VERSION Bien démarrer avec la CCM

Extension SSO Java. Cette note technique décrit la configuration et la mise en œuvre du filtre de custom SSO Java.

GUIDE D'INSTALLATION DU SYSTEME DE GESTION DE BASES DE DONNEES MYSQL POUR LE PGI EBP

Europa. Développement JEE 5. avec Eclipse. K a r i m D j a a f a r. A v e c l a c o n t r i b u t i o n d e O l i v i e r S a l v a t o r i

Procédure d'installation complète de Click&Decide sur un serveur

2010 Ing. Punzenberger COPA-DATA GmbH. Tous droits réservés.

CAHIER DES CHARGES D IMPLANTATION

PORTAIL INTERNET DE LA GESTION PUBLIQUE Guide d'utilisation du Portail Internet de la Gestion Publique

Atelier Le gestionnaire de fichier

VXPERT SYSTEMES. CITRIX NETSCALER 10.1 et SMS PASSCODE 6.2. Guide d installation et de configuration pour Xenapp 6.5 avec SMS PASSCODE 6.

TP1 : Initiation à Java et Eclipse

GUIDE D INSTALLATION DE L APPLICATION GECOL SUR

Module pour la solution e-commerce Magento

Cours Plugin Eclipse. Université Paris VI / Parcours STL / Master I Pierre-Arnaud Marcelot - Iktek - pamarcelot@iktek.com

Programmation Web. Madalina Croitoru IUT Montpellier

Institut Supérieure Aux Etudes Technologiques De Nabeul. Département Informatique

Network Shutdown Module V3 Extension du Manuel Utilisateur pour architecture Virtualisée VMWare ESX Server

Sauvegarder ses données avec Syncback Windows 98, 2000, Me, NT, XP

KAJOUT WASSIM INTERNET INFORMATION SERVICES (IIS) 01/03/2013. Compte-rendu sur ISS KAJOUT Wassim

Edutab. gestion centralisée de tablettes Android

Tekla Structures Guide de l'administrateur sur l'acquisition de licences. Version du produit 21.1 septembre Tekla Corporation

DOM - Document Object Model

A DESTINATION DES SERVICES TIERS. Editeurs d applications et ressources pédagogiques connectées à l ENT

PROCEDURE D'INSTALLATION OPENREPORTS

Nouveautés joomla 3 1/14

Oracle Developer Suite 10g. Guide de l installation. Vista & Seven

Cours 420-KEG-LG, Gestion de réseaux et support technique. Atelier No2 :

Compte Rendu d intégration d application


Créer et partager des fichiers

POVERELLO KASONGO Lucien SIO 2, SISR SITUATION PROFESSIONNELLE OCS INVENTORY NG ET GLPI

Système Normalisé de Gestion des Bibliothèques -SYNGEB : version Réseau-

Aide sur l'authentification par certificat

Récupérer les documents stockés sur l ENTG

Reporting Services - Administration

Tutorial pour une application simple

Transcription:

Serveur d'application Client HTML/JS Apache Thrift Bootcamp

Pré-requis La liste ci-dessous de logiciels doit être installée et opérationnelle sur la machine des participants : Compilateur thrift http://thrift.apache.org/ Libthrift java Serveur d'application Tomcat http://tomcat.apache.org/ Eclipse IDE for Java EE Developers http://www.eclipse.org/ 2

Objectif : ChatRoom Création d'une application ChatRoom simple : Enregistrement d'utilisateur Visualiser les 20 derniers messages Envoyer un message Implémentations : Partie Serveur en Java Implémentations clientes dans des différents langages 3

Modèle Liste des messages Message Message : Contenu Utilisateur Utilisateur : Pseudo Mot de passe 4

Fonctions métiers Lister les messages Envoyer un message Enregistrer un utilisateur 5

Modéle Thrift 1 - utilisateur.thrift namespace java com.arkea.thrift.data.utilisateur /** * Structure utilisateur **/ struct Utilisateur { /** pseudo Utilisateur */ 1:string pseudo, } /** mot de passe */ 2:string motdepasse, 6

Modèle Thrift 2 - message.thrift namespace java com.arkea.thrift.data.message include "utilisateur.thrift" /** * Structure Message **/ struct Message { /** contenu Message */ 1:string contenu, } /** utilisateur ayant ecrit le Message */ 2:utilisateur.Utilisateur utilisateur, 7

Modèle Thrift 3 - chatroomservice.thrift namespace java com.arkea.thrift.service.chatroom include "message.thrift" include "utilisateur.thrift" /** Service ChatRoomService */ service ChatRoomService { /** Recupérer la liste des Messages */ list<message.message> getlistemessage() /** Envoyer un message */ void envoyermessage(1:message.message message) /** Enregistrer un utilisateur */ void enregistrerutilisateur (1: utilisateur.utilisateur utilisateur) } 8

Génération Java 1. Dans un répertoire, créer les fichiers user.thrift, message.thrift et chatroomservice.thrift 2. Compiler le fichier chatroomservice.thrift via la commande : thrift v r gen java:beans,hashcode chatroomservice.thrift Les fichiers user.thrift et message.thrift sont compilés par récursivité ils sont inclus dans le fichier service. Les classes générées sont dans le répertoire gen javabean avec l'arborescence spécifié dans la variable namespace. 9

Serveur d'application - Configuration Server Runtime 1. Dans Eclipse, aller dans le menu Window > Preferences 2. Ouvrir l'onglet Server > Runtime Environments 3. Cliquer sur Add 4. Sélectionner votre version de serveur d'application Dans notre cas Apache Tomcat v7.0 5. Cliquer sur Next et choisir le répertoire d'installation via le bouton Browse puis cliquer sur Finish 6. Fermer la fenêtre des préférences en cliquant sur OK 10

Serveur d'application - Création projet 1. Créer un projet Dynamic Web Project sous Eclipse. 2. Nommer le ChatRoomServeur 3. Cliquer deux fois sur Next 4. Cocher la case Generate web.xml deployment descriptor 5. Cliquer sur Finish 11

Serveur d'application - Bibliothèques 1. Hors Eclipse, copier les bibliothèques dans le répertoire ChatRoomServeur/WebContent/WEB INF/lib commons lang.jar, httpclient.jar, httpcore.jar, slf4j api.jar, slf4j log4j12.jar, libthrift.jar, log4j.jar 2. Dans Eclipse, click droit sur le projet ChatRoomServeur puis Refresh 3. Vérifier que les.jar sont bien présentes dans le répertoire ChatRoomServeur/WebContent/WEB INF/lib 12

Serveur d'application Bibliothèque Server Runtime 1. Dans Eclipse, click droit sur le projet ChatRoomServeur puis Properties 2. Cliquer sur Java Build Path et selectionner l'onglet Libraries 3. Cliquer sur Add Librarie... et sélectionner Server Runtime 4. Cliquer sur Next, sélectionner le serveur Tomcat précédemment configuré puis cliquer sur Finish 5. Fermer la fenêtre des préférences en cliquant sur OK 13

Serveur d'application - Création du package 1. Etendre ChatRoomServeur > Java Resources 2. Click droit sur src puis New > Package 3. Saisir com.arkea.serveur.servlet 4. Cliquer sur Finish 5. Refaire la même opération pour le package com.arkea.serveur.processor 14

Serveur d'application - Création des classes 1. Click droit sur le package com.arkea.serveur.servlet, puis New > Class 2. Saisir ChatRoomServlet puis cliquer sur Finish 3. Réitérer l'opération pour le package com.arkea.serveur.processor avec les classes ChatRoomProcessor 15

Serveur d'application - Ajout des classes thrift générées 1. Hors Eclipse, copier les classes thrifts générées du répertoire gen javabean au répertoire src du projet ChatRoomServeur 2. Dans Eclipse, click droit sur le projet ChatRoomServeur puis Refresh 3. Puis vérifier que les packages ainsi que les classes thrifts sont désormais visible dans le répertoire src 16

Serveur d'application - ChatRoomProcessor 1. Ouvrir la classe ChatRoomProcessor dans l'editeur 2. Ajouter l'import : import com.arkea.thrift.service.chatroom.*; 3. Implémenter l'interface ChatRoomService.Iface, Ajouter les méthodes obligatoires 4. Dans la méthode enregistrerutilisateur() Remplacer le // TODO Auto generated method stub par System.out.println(utilisateur.getPseudo()); 5. Dans la méthode envoyermessage() Remplacer le // TODO Auto generated method stub par System.out.println(message.getContenu()); 17

Serveur d'application - ChatRoomServlet (1/2) Cette servlet permet de faire le mapping entre le flux http entrant dans le serveur d'application et le service thrift que nous avons créé. Le format d'échange des données est le format JSON. 1. Ouvrir la classe ChatRoomServlet dans l'editeur 2. Ajouter les imports thrifts suivants : import org.apache.thrift.protocol.tjsonprotocol; import org.apache.thrift.server.tservlet; import com.arkea.serveur.processor.chatroomprocessor; import com.arkea.thrift.service.chatroom.chatroomservice; 3. Hériter de la classe TServlet 18

Serveur d'application - ChatRoomServlet (2/2) 4. Ajouter le constructeur : public ChatRoomServlet() { super( new ChatRoomService.Processor<ChatRoomService.Iface>( new ChatRoomProcessor()), new TJSONProtocol.Factory()); } 5. Ajouter un serialversionuid 6. Sauvegarder 19

Serveur d'application - Configuration servlet web.xml 1. Etendre WebContent/WEB INF 2. Ouvrir le fichier web.xml 3. Après la ligne </welcome file list>, ajouter les lignes <servlet> <servlet name>chatroomservlet</servlet name> <servletclass>com.arkea.serveur.servlet.chatroomservlet</servletclass> </servlet> <servlet mapping> <servlet name>chatroomservlet</servlet name> <url pattern>/chatroom/*</url pattern> </servlet mapping> 4. Sauvegarder le tout 20

Serveur d'application - Déploiement 1. Sous Eclipse, ajouter la vue Server via le menu Windows > Show View > Servers 2. Dans la nouvelle vue, faire un click droit et New > Server 5. Cliquer sur Next dans la nouvelle boite de dialogue 7. Cliquer sur ChatRoomServer > Add > Finish 9. Click droit sur le nouveau serveur puis Debug Le serveur se lance, les traces sont disponibles dans la vue console 21

Application Cliente JS - Présentation Création d'une application cliente utilisant le JavaScript. Cette application sera hébergée sur un serveur d'application utilisant le même nom de domaine que le service ChatRoomServeur dans notre cas, localhost pour éviter les alertes de cross-scripting dans les navigateurs. 22

Application Cliente JS - Création projet 1.Créer un projet Dynamic Web Project sous Eclipse. 2. Nommer le ChatRoomJs 3. Cliquer sur Finish 4.Dans le répertoire WebContent, créer un répertoire js 23

Application Cliente JS - Génération JS Dans le répertoire qui contient les fichiers thrift, exécuter la commande de génération JS suivante : thrift v r gen js:jquery chatroomservice.thrift La génération des JS sera compatible avec le modèle JQuery parce qu'à l'heure actuelle il s'agit de la librairie la plus commune. 24

Application Cliente JS - Ajout des fichiers au projet 1. Copier l'ensemble des fichiers JS du répetoire gen js dans les répertoire WebContent/js du projet ChatRoomJs 2. Ajouter également au répertoire la lib thrift.js présent dans le projet thrift dans le répertoire /lib/js 3. Ajouter également la dernière version de JQuery (http://jquery.com/) 4. Dans Eclipse, click droit sur le projet ChatRoomJs puis Refresh 5. Puis vérifier que les fichiers JS sont désormais visible dans le répertoire WebContent/js 25

Application Cliente JS - chatroom.html 1. Sous éclipse, click droit sur WebContent du projet ChatRoomJs créer puis New > File 2. Saisir chatroom.html, puis Finish 3. Y ajouter le squelette ci-dessous puis sauvegarder : <!DOCTYPE HTML PUBLIC " //W3C//DTD HTML 4.0//EN" "http://www.w3.org/tr/rec html40/strict.dtd"> <HTML> <HEAD> <TITLE>ChatRoom Service</TITLE> </HEAD> <BODY> <a href="enregistrer.html">enregistrer une utilisateur</a><br> <a href="envoyer.html">envoyer un message</a><br> <a href="message.html">lister les messages</a><br> </BODY> </HTML> 26

Application Cliente JS - Fichiers services (1/2) 1. Créer les fichiers enregistrer.html, message.html et envoyer.html comme chatroom.html 2. Ajouter le squelette suivant : <!DOCTYPE HTML PUBLIC " //W3C//DTD HTML 4.0//EN" "http://www.w3.org/tr/rec html40/strict.dtd"> <HTML> <HEAD> <TITLE>Fonction</TITLE> </HEAD> <BODY> <div></div> <br> <a href="chatroom.html">retour</a> </BODY> </HTML> 27

Application Cliente JS - Fichiers services (2/2) 3. Ajouter les includes javascript suivants entre les balises head : <script src="./js/thrift.js" type="text/javascript"></script> <script src="./js/jquery 1.7.2.min.js" type="text/javascript"></script> <script src="./js/utilisateur_types.js" type="text/javascript"></script> <script src="./js/message_types.js" type="text/javascript"></script> <script src="./js/chatroomservice.js" type="text/javascript"></script> <script src="./js/chatroomservice_types.js" type="text/javascript"></script> 4. Sauvegarder 28

Application Cliente JS enregistrer.html (1/2) 1. Ajouter le code HTML suivant dans la div : <p> </p> Pseudo : <input id="pseudo" type="text"/><br> Mot de passe : <input id="motdepasse" type="text"/><br> <input type="button" value="enregistrer" onclick="javascript:enregistrer()" /><br> 29

Application Cliente JS enregistrer.html (2/2) 2. Ajouter le fonction JavaScript suivante entre les balises head et sauvegarder : <script type="text/javascript"> function enregistrer() { var transport = new Thrift.Transport("http://localhost:8080/ChatRoomServeur/chatroom/"); var protocol = new Thrift.Protocol(transport); var client = new ChatRoomServiceClient(protocol); var utilisateur = new Utilisateur(); utilisateur.pseudo = $("#pseudo").val(); utilisateur.motdepasse = $("#motdepasse").val(); try { client.enregistrerutilisateur(utilisateur); } catch(e){ alert(e); } } </script> 30

Application Cliente JS - Déploiement 1. Sous Eclipse, dans la vue Servers, faire un click droit sur le Server > Add and Remove... 2. Sélectionner ChatRoomJs puis Add puis Finish 3. Lancer ou redémarrer le serveur par click droit sur le serveur puis Server > Restart in Debug Le serveur se lance, les traces sont disponibles dans la vue console 31

Application Cliente JS - Test 1. Ouvrir un navigateur web, saisir l'url http://localhost:8080/chatroomjs/chatroom.html 2. Cliquer sur le lien Enregistrer un utilisateur 3. Saisir un pseudo et un mot de passe puis cliquer sur Envoyer 4. Aller sous Eclipse, dans la vue Console, le pseudo doit y être affiché 32

Application Serveur - Enregistrer un utilisateur 1. Sous Eclipse, ouvrir la classe ChatRoomProcessor et ajouter l'import de Hashtable import java.util.hashtable; 2. Ajouter la variable globale suivant : private Hashtable<String, Utilisateur> lstutilisateurs = new Hashtable<String, Utilisateur>(); 3. Modifier le code de enregistrerutilisateur() en le remplaçant par : if(!lstutilisateurs.containskey(utilisateur.getpseudo())){ lstutilisateurs.put(utilisateur.getpseudo(), utilisateur); } 4. Sauvegarder 33

Modéle Thrift 4 - exception.thrift (1/3) Thrift propose une gestion d'erreur dans son implémentation que nous allons mettre en œuvre 1. Création d'une structure exception namespace java com.arkea.thrift.data.exception /** * Exception pour le service ChatRoom **/ exception ServiceException { /** identifiant erreur */ 1:string id, } /** message erreur */ 2:string message, 34

Modéle Thrift 4 - exception.thrift (2/3) 2. Modifier le service chatroomservice.thrift en ajoutant l'include du fichier exception.thrit et en ajoutant l'exception à la déclaration des méthodes include "exception.thrift" /** Service ChatRoomService */ service ChatRoomService { /** Recupérer la liste des Messages */ list<message.message> getlistemessage() throws (1:exception.ServiceException se) /** Envoyer un message */ void envoyermessage(1:message.message message) throws (1:exception.ServiceException se) } /** Enregistrer un utilisateur */ void enregistrerutilisateur (1: utilisateur.utilisateur utilisateur) throws (1:exception.ServiceException se) 35

Modéle Thrift 4 - exception.thrift (3/3) 3. Créer le fichier exception.thrift et modifier chatroomservice.thrift 4. Régénérer toutes les fichiers thrift en Java et JS comme vu précédemment 5. Mettre a jour les deux projets sous Eclipse en suivant la même démarche que lors de la première génération 6. Dans la classe ChatRoomProcessor.java ajouter l'import import com.arkea.thrift.data.exception.serviceexception 7. Ajouter l'exception ServiceException à la signature des méthodes 36

Application Serveur - Gestion des exceptions 1. Sous Eclipse, ouvrir la classe ChatRoomProcessor 2. Modifier le code de enregistrerutilisateur() en ajoutant le cas ou le pseudo de l'utilisateur existe déjà, une exception est levée : if(!lstutilisateurs.containskey(utilisateur.getpseudo())) { lstutilisateurs.put(utilisateur.getpseudo(), utilisateur); } else { throw new ServiceException("err1","Pseudo déjà existant!"); } 3. Sauvegarder 37

Application Cliente JS - chatroom.html 1. Ajouter l'inclusion suivante aux fichiers enregistrer.html, message.html et envoyer.html: <script src="./js/exception_types.js" type="text/javascript"></script> 2. Sauvegarder, redémarrer le serveur d'application et effectuer un test en envoyant deux fois le même pseudo 3. L'exception doit apparaître dans une boite de dialogue 38

Application Serveur - Gestion des messages (1/3) 1. Sous Eclipse, ouvrir la classe ChatRoomProcessor et ajouter l'import de LinkedList import java.util.linkedlist; 2. Ajouter la variable globale suivant : private LinkedList<Message> lstmessages = new LinkedList<Message>(); 3. Modifier le code de getlistemessage() en le remplaçant par : return lstmessages; 4. Ajouter la méthode privée d'ajout de message, cette dernière est synchronisée pour éviter les soucis d'écriture via le multithread du serveur d'application 39

Application Serveur - Gestion des messages (2/3) 4. Ajouter la méthode privée d'ajout de message, cette dernière est synchronisée pour éviter les soucis d'écriture private synchronized void addmessage(message message) throws ServiceException { try { if (message.getutilisateur().getmotdepasse().equals( lstutilisateurs.get(message.getutilisateur(). getpseudo()).getmotdepasse())) { if (lstmessages.size() == 20) { lstmessages.remove(0); } lstmessages.add(message); } else { throw new ServiceException("err2", "Identité non valide lors d'un ajout de message!"); } } catch(exception e) { throw new ServiceException("err3", "Erreur technique lors d'un ajout de message!"); } } 40

Application Serveur - Gestion des messages (3/3) 5. Modifier le code de envoyermessage() en le remplaçant par : addmessage(message); 6. Sauvegarder 41

Application Cliente JS envoyer.html (1/2) 1. Ajouter le code HTML suivant dans la div : <p> </p> Pseudo : <input id="pseudo" type="text"/><br> Mot de passe : <input id="motdepasse" type="text"/><br> Message : <input id="message" type="text" size="100"/><br> <input type="button" value="envoyer" onclick="javascript:envoyer()" /> 2. Ajouter la fonction javascript ci-dessous dans les balises HEAD puis sauvegarder : 42

Application Cliente JS envoyer.html (2/2) <script type="text/javascript"> function envoyer() { var transport = new Thrift.Transport( "http://localhost:8080/chatroomserveur/chatroom/"); var protocol = new Thrift.Protocol(transport); var client = new ChatRoomServiceClient(protocol); var message = new Message(); var utilisateur = new Utilisateur(); utilisateur.pseudo = $("#pseudo").val(); utilisateur.motdepasse = $("#motdepasse").val(); message.utilisateur = utilisateur; message.contenu = $("#message").val(); try { client.envoyermessage(message); } catch(e){ alert(e); } } </script> 43

Application Cliente JS message.html (1/2) 1. Ajouter le code HTML suivant dans la div : <div id="lstmessage"/><br/> <input type="button" value="rafraichir" onclick="javascript:rafraichir()" /> 44

Application Cliente JS - message.html (2/2) 2. Ajouter la fonction JavaScript ci-dessous entre les balises head puis sauvegarder : <script type="text/javascript"> function rafraichir() { var transport = new Thrift.Transport("http://localhost:8080/ChatRoomServeur/chatroom/"); var protocol = new Thrift.Protocol(transport); var client = new ChatRoomServiceClient(protocol); try { var lstmessage = client.getlistemessage(); } catch(e){ alert(e); } $("#lstmessage").empty(); for(i=0; i<lstmessage.length;i++) { $("#lstmessage").append(lstmessage[i].utilisateur.pseudo + " : " + lstmessage[i].contenu + " <br>"); } } </script> 45

Application Cliente JS - Déploiement 1. Redémarrer le serveur d'application 2. Tester les fonctionnalités du service via les pages web. 46

Modéle Thrift 5 - chatroomservice.thrift 1. Modification d'un service pour illustrer la continuité dans la compatibilité /** Service ChatRoomService */ service ChatRoomService { /** Recupérer la liste des Messages */ list<message.message> getlistemessage() throws (1:exception.ServiceException se) /** Envoyer un message */ bool envoyermessage(1:message.message message) throws (1:exception.ServiceException se) /** Enregistrer un utilisateur */ bool enregistrerutilisateur (1: utilisateur.utilisateur utilisateur) throws (1:exception.ServiceException se) } 47

Application Serveur Ajout de boolean retour (1/3) 1. Régénérer tous les fichiers thrift uniquement en Java 2. Mettre a jour le projet ChatRoomServeur sous Eclipse en suivant la même démarche que lors de la première génération 3. Désormais la classe ChatRoomServeur comporte la nouvelle signature de méthode : @Override public boolean envoyermessage() throws ServiceException, TException { // TODO Auto generated method stub return false; } 48

Application Serveur Ajout de boolean retour (2/3) 4. Modifier le code de envoyermessage() : @Override public boolean envoyermessage() throws ServiceException, TException { addmessage(message); return true; } 49

Application Serveur Ajout de boolean retour (3/3) 4. Faire les mêmes modifications avec enregistrerutilisateur() : public boolean enregistrerutilisateur(utilisateur utilisateur) throws ServiceException { } if(!lstutilisateurs.containskey(utilisateur.getpseudo())){ lstutilisateurs.put(utilisateur.getpseudo(), utilisateur); System.out.println(utilisateur.getPseudo() + " enregistré"); } else { throw new ServiceException("err1","Pseudo déjà existant!"); } return true ; 5. Sauvegarder la classe 50

Application Serveur Test 1. Relancer le serveur d'application. 2. Vérifier à travers des tests que le client JS fonctionne normalement alors qu'il n'a pas été mis à jour Des pop-ups d'avertissement apparaissent pour indiquer que la version a été mise à jour Ceci est dû à notre gestion d'erreurs qui attrape toutes les exceptions techniques et fonctionnelles en JavaScript 51