28 0 92KB
CNAM – NFP111 – Systèmes et Applications Répartis Année 2010 – 2011 – Examen Final
NFP111 – Systèmes et Applications Répartis Année 2010 – 2011 Examen Final – 1ère session Durée : 3H Tout document est autorisé Pas de calculatrice Cet examen est de 3 pages
Exercice 1 : Servlet (4 points) Considérer un formulaire HTML qui permet d’entrer un nom et un mot de passe. L’action de ce formulaire est une servlet appelée Authentification. 1. Ecrire le code de ce formulaire. (1 point) 2. Considérer le fichier web.xml suivant :
Authentification servlets.Authentification
nomInitial moi
passwdInitial d2XW5*2Q
Ce fichier contient les valeurs initiales de la servlet. Ecrire la servlet Authentification qui récupère un nom et un mot de passe à partir du formulaire donné dans la première question. Cette servlet compare ensuite les valeurs récupérées du formulaire aux valeurs initiales de la servlet (dans le web.xml). Au cas où elles sont identiques, on considère que l'utilisateur est authentifié, une page HTML est alors créée par la servlet. Cette page propose une zone de texte (textarea) et un bouton de validation. (3 points) Suivez les indications suivantes pour résoudre cet exercice: a. Dans la servlet, utiliser init() qui est une méthode fondamentale de la servlet et qui pourrait provoquer des exceptions de type ServletException. b. Dans init(), appeler la méthode getServletConfig() qui retourne un objet de type ServletConfig contenant les paramètres d’initialisation de la servlet. c. Récupérer les valeurs initiales du nom et du mot de passe à partir de cet objet en utilisant la méthode getInitParameter(String).
Page 1 de 3
CNAM – NFP111 – Systèmes et Applications Répartis Année 2010 – 2011 – Examen Final
d. Ecrire la méthode doGet qui permet de comparer les valeurs récupérées du formulaire aux valeurs initiales de la servlet et qui crée la page HTML en question quand l'utilisateur est authentifié.
Exercice 2 : WebServices (4 points) Considérer la classe Calculs.jws. Cette classe possède trois fonctions Somme, Moyenne et Produit de 3 nombres entiers. Le calcul de la moyenne doit donner un résultat entier. 1. Ecrire la classe Calculs.jws. (1 point) 2. Ecrire le fichier client CalculsClient.java qui permet d’appeler ces trois fonctions. Prendre en considération les cas d’erreurs de saisie par l’utilisateur (ex : nombre d’arguments < à celui demandé, ...). (3 points)
Exercice 3 : RMI : Partage d'ensembles de coordonnées 2D (9 points) On souhaite stocker sur un serveur de données un ensemble de coordonnées 2D décrivant les positions d'un certain nombre de véhicules dans le plan. Ce serveur devra inclure les fonctionnalités suivantes : • • • • • •
accès au nombre de positions, test de l'existence d'une position possédant un nom particulier, accès en lecture aux positions (c’est-à-dire, retourner une position), création d'une nouvelle position et attribution d'un nom, destruction d'une position, accès en écriture aux positions (c’est-à-dire, modifier une position). a)
b) c)
Ecrire l'application serveur : L’interface. (1.5 points) La classe qui matérialise le service. (2.5 points) Le fichier Serveur pour permettre l’enregistrement du service auprès de RMI Registry. (1 point) La classe Position.java. Chaque position possède deux coordonnées x et y. (1 point) Ecrire une application cliente ayant pour but de détruire une position sur un poste serveur. (1.5 points) Ecrire une application cliente ayant pour but de modifier une position sur un poste serveur. (1.5 points)
Quelques Indications pour résoudre cet exercice :
Page 2 de 3
CNAM – NFP111 – Systèmes et Applications Répartis Année 2010 – 2011 – Examen Final
Utiliser la classe Hashtable du package java.util. Cette classe permet de créer des collections d'objets associés à des noms (clés), en quelque sorte des dictionnaires. Une même Hashtable peut contenir des objets de classe quelconque. Son Utilisation : Constructeurs : Parmi les constructeurs disponibles, l'un n'attend aucun paramètre, l'autre attend une taille initiale en paramètre. Ajouter un objet : Pour ajouter un élément « o » avec la clé « nom » dans Hashtable « h » : h.put(nom,o); Lire un objet : Pour retrouver l'élément « o » associé à la clé « nom » : o=h.get(nom); o Attention la méthode get renvoie des objets généraux (classe Object), il est donc souvent nécessaire d'effectuer un cast pour retrouver le type qui a été stocké. Pour trouver le nombre d’éléments de Hashtable on utilise : h.size() Pour déterminer si Hashtable contient une clé spécifique « nom » : h.containsKey(nom) Pour supprimer de Hashtable l'élément ayant la clé « nom » : h.remove(nom) ;
Exercice 4 : Exclusion mutuelle répartie (3 points) Dans cet exercice, nous considérons le cas d’une exclusion mutuelle répartie, algorithme de Lamport. 1. En utilisant cet algorithme, complétez le diagramme ci-dessous. (1 point) 2. Pourquoi les communications doivent-elles être FIFO? (2 points)
Page 3 de 3