Exam on Distributed Systems and Applications

Cet examen porte sur les systèmes et applications répartis. Il évalue les connaissances et compétences des étudiants en systèmes de fichiers distribués (NFS), services web (WSDL, SOAP, JAX-WS) et middleware orienté message (JMS). Les questions demandent à la fois des réponses théoriques, des justifications, des commandes pratiques et des analyses de code.

D'après le document Exam on Distributed Systems and Applications

Cet article a été rédigé automatiquement à partir du document source, puis vérifié avant publication.

Document source

Exam on Distributed Systems and Applications

Distributed Systems, Web Services, NFS, SOAP, WSDL · PDF · 12 pages · 2014

Afficher l'aperçu du document

Consulter le document original →

Cet examen porte sur les systèmes et applications répartis. Il évalue les connaissances et compétences des étudiants en systèmes de fichiers distribués (NFS), services web (WSDL, SOAP, JAX-WS) et middleware orienté message (JMS). Les questions demandent à la fois des réponses théoriques, des justifications, des commandes pratiques et des analyses de code.

Exercice 1 : NFS (7 points)

Cette première partie teste la compréhension des systèmes de fichiers distribués, en particulier NFS, ainsi que la maîtrise des commandes associées.

Partie I : Questions à choix multiple

Question 1 : Quel système de fichiers distribués supporte le modèle de transfert complet ?

Analyse : NFS, GFS et AFS supportent des transferts par parties (blocs ou chunks), donc aucun ne supporte le modèle de transfert complet.

Réponse : (d) aucun

Question 2 : Lequel (lesquels) des systèmes de gestion de fichiers distribués place les métadonnées dans un fichier serveur de données séparé ?

Analyse : GFS et HDFS placent les métadonnées dans un serveur séparé (Master dans GFS, NameNode dans HDFS). NFS et AFS ne le font pas.

Réponse : (b) GFS et (d) HDFS

Partie II : Questions générales

Question 1 : Quels sont les services de niveau inférieur nécessaires au protocole NFS ?

Réponse : NFS fonctionne au-dessus des couches RPC (Remote Procedure Call) et XDR (eXchange Data Representation), qui assurent respectivement la communication par requête/réponse et la représentation universelle des données.

Question 2 : Que signifie la commande suivante : mount -t nfs4 192.168.1.3:/tmp /partage ?

Réponse : Cette commande monte, sur la machine cliente où elle est exécutée, le répertoire /tmp du serveur NFS version 4 situé à l'adresse IP 192.168.1.3, dans le répertoire local /partage.

Question 3 : Donnez la commande qui exporte tous les répertoires listés dans /etc/exports.

Réponse : La commande est exportfs -a, qui exporte tous les répertoires définis dans le fichier /etc/exports.

Question 4 : Quel est le rôle du fichier /etc/fstab ? De quel côté est-il utilisé ?

Réponse : Le fichier /etc/fstab liste les systèmes de fichiers qui peuvent être montés automatiquement sur la machine cliente. Il est utilisé côté client pour automatiser le montage des systèmes de fichiers.

Question 5 : Donnez la commande qui liste les répertoires exportés par le serveur.

Réponse : La commande est showmount -e.

Partie III : Mise en place d’un serveur NFS

Question 1 : Indiquez le contenu du fichier /etc/exports sur la machine popeye pour exporter /dirs/public en lecture seule sur le domaine ensi.tn et /dirs/private en lecture-écriture sur olive.ensi.tn.

Réponse :

/dirs/public  *.ensi.tn(ro)
/dirs/private olive.ensi.tn(rw)

Question 2 : Que se passe-t-il lors du redémarrage du serveur NFS avec la commande service nfs restart ?

Réponse : Le serveur NFS relit le fichier /etc/exports et applique les modifications, c’est-à-dire qu’il exporte les répertoires avec les options spécifiées.

Question 3 : Indiquez la commande à effectuer sur la machine Folla.ensi.tn pour monter le répertoire partagé public dans /mnt/popeye.

Réponse :

mount -t nfs popeye.ensi.tn:/dirs/public /mnt/popeye

Question 4 : Comment la machine Folla peut-elle auto-monter ce répertoire à chaque redémarrage ?

Réponse : Il faut s’assurer que le service nfsd est lancé, puis ajouter dans le fichier /etc/fstab de Folla la ligne suivante :

popeye.ensi.tn:/dirs/public  /mnt/popeye  nfs  ro  0 0

Exercice 2 : Web services (7 points)

Ce second exercice évalue la connaissance des concepts fondamentaux des services web, notamment WSDL, SOAP, JAX-WS, ainsi que la capacité à justifier des réponses et à comprendre des outils associés.

Partie I : QCM avec justification

Question 1 : Pour publier un service web :

  • a) On doit résoudre ses dépendances vis-à-vis d’autres services
  • b) On doit utiliser le protocole Internet DNS
  • c) On utilise un référentiel de services web, qui s’appelle UDDI

Réponse : (c) UDDI est un serveur de nommage pour les services web SOAP.

Question 2 : Un fichier décrivant un service web en WSDL 1.1 :

  • a) Est obligatoirement un fichier XML
  • b) Peut se comparer à une interface Java (au sens «interface Java vs. classe Java»)
  • c) Doit contenir une balise xml <deployment>
  • d) Doit contenir une unique balise <service>

Réponse : Les réponses correctes sont (a), (b) et (d). Le fichier WSDL est codé en XML, décrit une interface comparable à une interface Java, et contient une balise <service>. La balise <deployment> n’est pas obligatoire.

Question 3 : Un message SOAP :

  • a) doit être codé en XML
  • b) doit contenir une enveloppe SOAP
  • c) peut avoir un entête (header)
  • d) peut avoir un corps SOAP (body)

Réponse : (a), (b) et (c) sont corrects. L’entête est optionnel, le corps est obligatoire.

Question 4 : Un fichier WSDL 1.1 associé à un service web :

  • a) Expose au plus une opération
  • b) Expose autant de types de port (portType) que d’opérations
  • c) Expose au plus une façon de liaison (binding) à chaque type de port
  • d) Expose autant de ports que de portTypes

Réponse : Cette question est annulée car la réponse b est ambiguë et incorrecte selon la correction fournie.

Partie II : JAX-WS

Le service web BanqueWS propose trois opérations : CreerCompte, CrediterCompte, DebiterCompte.

Question 1 : Comment doit être l’objet Compte ?

Réponse : L’objet Compte doit être sérialisable (Serializable).

Question 2 : Sans écrire le publisher, quelle est la méthode utilisée pour publier le service web ? Comment vérifier la génération automatique du fichier WSDL ?

Réponse : La méthode est :

Endpoint endpoint = Endpoint.publish(URI, objet)

La génération automatique du fichier WSDL peut être vérifiée en accédant via un navigateur à l’URL :

http://localhost:8888/InterfaceObjet?wsdl

Question 3 : Combien d’opérations et de messages contient le fichier WSDL généré ? Justifiez.

Réponse : Le fichier WSDL contient 3 opérations (CreerCompte, CrediterCompte, DebiterCompte) et 6 messages (3 requêtes + 3 réponses).

Question 4 : Quel est le but d’un outil comme SoapUI ?

Réponse : SoapUI est un outil utilisé pour tester les services web sans avoir à écrire un client.

Question 5 : Quel outil peut être utilisé par le client pour générer les classes nécessaires à l’invocation des opérations du service web à distance ?

Réponse : L’outil est wsimport.

Question 6 : Citez quatre classes générées côté client.

Réponse : Parmi les classes générées, on trouve :

  • BanqueWSService.class/java
  • CreerCompte.class/java
  • CreerCompteResponse.class/java
  • Compte.class/java
  • ObjectFactory.class/java

Exercice 3 : MOM-JMS (6 points)

Ce dernier exercice porte sur JMS, le middleware orienté message, avec des questions théoriques et un problème de code.

Partie I : QCM

Question 1 : Lesquelles concernant JMS sont correctes ? (choisir trois)

  • a) JMS est l’acronyme de Java Mail Service.
  • b) JMS supporte l’approche orientée événement pour la réception de message.
  • c) JMS supporte les modes de communication synchrone et asynchrone.
  • d) JMS ne dépend pas des produits MOM (Messaging-Oriented Middleware).
  • e) JMS fournit un mécanisme de programmation Java afin d’accéder à un système d’échange par messages.

Réponse : Les réponses correctes sont (b), (c) et (e).

Question 2 : Laquelle des phrases suivantes est correcte ?

  • a) L’API JMS se trouve dans le package java.jms.
  • b) JMS offre des services et interfaces de nommage.
  • c) JMS permet à une application de favoriser une flexibilité et un échange de données asynchrone.
  • d) JMS permet à une application de favoriser un couplage faible et une communication distribuée.

Réponse : (c) est correcte.

Question 3 : Qu’est-ce que JNDI ? À quoi sert-il lorsqu’il est utilisé avec JMS ?

  • a) Acronyme de Java Naming and Directory Interface.
  • b) API pour gérer des annuaires de données ou d’objets.
  • c) Parser des documents XML.
  • d) Accéder au code natif à partir d’une application Java.
  • e) Enregistrer des applications Web Java dans un serveur Web.
  • f) Accéder à plusieurs services d’annuaire via une interface unique.

Réponse : Les réponses correctes sont (a), (b) et (f).

Partie II : Problème JMS

Le code donné correspond à un programme de chat utilisant JMS.

Question 1 : De quel modèle de messagerie s’agit-il ? Justifiez et rappelez le principe de ce modèle.

Réponse : Il s’agit du modèle publish/subscribe (pub/sub), car la création de la connexion et des sessions utilise createTopicConnection et createTopicSession. Dans ce modèle, un message publié sur un topic est diffusé à tous les abonnés (subscribers).

Question 2 : Complétez le code en remplissant les vides.

TopicConnectionFactory conFactory =
    (TopicConnectionFactory) jndi.lookup("JmsTopicConnectionFactory");

TopicConnection connection =
    conFactory.createTopicConnection(username, password);

TopicSession pubSession =
    connection.createTopicSession(false, Session.AUTO_ACKNOWLEDGE);

TopicSession subSession =
    connection.createTopicSession(false, Session.AUTO_ACKNOWLEDGE);

Topic chatTopic = (Topic) jndi.lookup(topicName);

Question 3 : Que peut être le mode de consommation de messages ? Rappelez brièvement le principe.

Réponse : Il existe deux modes de consommation :

  • Pull (explicite) : le consommateur interroge périodiquement la file ou le topic pour récupérer les messages.
  • Push (implicite) : le consommateur est notifié automatiquement lorsqu’un message arrive (via un listener).

Question 4 : La réception dans ce programme est-elle synchrone ou asynchrone ? Justifiez.

Réponse : La réception est asynchrone, car le code utilise un listener avec la ligne receiver.setMessageListener(this), ce qui signifie que les messages sont reçus via des callbacks, sans blocage.

Méthode

Ce sujet récompense la maîtrise des concepts fondamentaux des systèmes distribués, la capacité à justifier les réponses, et la connaissance pratique des commandes et API. Les erreurs fréquentes à éviter sont :

  • Confondre les modèles de transfert dans les systèmes de fichiers distribués.
  • Omettre les couches sous-jacentes (RPC, XDR) dans NFS.
  • Ne pas expliquer clairement les commandes Linux liées à NFS.
  • Confondre les éléments obligatoires et optionnels dans WSDL et SOAP.
  • Ne pas distinguer les modes synchrone/asynchrone en JMS.
  • Omettre de justifier les choix dans les QCM.

Il est essentiel de montrer les étapes de raisonnement, de citer précisément les commandes ou extraits de code, et de respecter les définitions données dans l’énoncé.

Partager

Commentaires

Aucun commentaire pour le moment. Posez la première question.

Les commentaires sont relus avant publication. Votre e-mail n'est jamais affiché.

← Toutes les révisions