Ecole Nationale des Sciences de l’Informatique
A. U. : 2014/2015
EXAMEN
Systèmes et Applications Répartis
Classe/Filières:
Durée :
Responsables : F. Najjar & N. Ben Azzouna
II2- SLE & RSR
2h00
7/05/2015
Date:
Documents: Non autorisés
Nb. Pages: 5
Prière de lire attentivement l’énoncé.
On demande des réponses concises mais claires et précises.
Exercice 1 : NFS (7 points—1+3+3)
Partie I : Questions à choix multiple
1) Quel système de fichiers distribués supporte le modèle de transfert complet?
(a) NFS
(b) GFS --Google File System
(c) AFS
(d) aucun
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é?
(a) NFS
(b) GFS
(c) AFS
(d) HDFS
Partie II : Questions générales (0,5+0,5+1+0,5+0,5)
1) Quels sont les services de niveau inférieur nécessaires au protocole NFS ?
2) Que signifie la commande suivante : mount -t nfs4 192.168.1.3:/tmp /partage
3) Donnez la commande qui exporte tous les répertoires listés dans /ect/exports
4) Quel est le rôle du fichier /etc/fstab ? de quel côté est-il utilisé ?
5) Donnez la commande qui liste les répertoires exportés par le serveur ?
1
Partie III (1+0,5+0,5+1)
On souhaite mettre en place un serveur NFS sur la machine popeye.ensi.tn qui exporte le répertoire
/dirs/public en lecture seule sur toutes les machines du domaine ensi.tn, et le répertoire /dirs/private
en lecture-écriture sur la machine olive. ensi.tn
1) Indiquez le contenu du fichier /etc/exports sur la machine popeye
2) On redémarre le serveur NFS à l'aide de la commande service nfs restart. En déduire les
conséquences.
3) Indiquez la commande à effectuer sur la machine Folla.ensi.tn pour monter le répertoire partagé
public dans /mnt/popeye.
4) Dire comment la machine Folla peut auto-monter ce répertoire à chaque redémarrage de la
machine.
Exercice 2 : Web services (7 points— 2 + 5)
Partie I. QCM: Les questions ne sont pas forcément à réponse unique (mais il y en a toujours
au moins une de possible !). Justifiez vos réponses :
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
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>
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)
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
Partie II. JAX-WS (0,5+1,5+1+0,5+0,5+1)
Soit le service web BanqueWS qui permet de réaliser 3 opérations :
CreerCompte qui rend un objet de type Compte ;
2
CrediterCompte qui a deux paramètres: un objet Compte et la somme à verser
dans ce compte ;
DebiterCompte qui a deux paramètres: un objet Compte et la somme à débiter de
ce compte.
Supposons que ce service web est implémenté en java et déployé avec JAXWS.
1) Comment doit être l’objet Compte ?
2) Sans écrire le publisher, dire quelle est la méthode utilisée pour la publication du web
service. Et dire comment vérifier la génération
automatique du fichier wsdl
correspondant ?
3) Combien d’opérations et de messages vont contenir le fichier wsdl généré ? Justifiez.
4) Dire Quel est le but d’avoir un outil comme SoapUI?
5) Quel est l’outil qui peut être utilisé par le client pour générer l’ensemble des classes qui
seront utilisées pour l’invocation des opérations du web service à distance ?
6) Citez 4 classes parmi celles qui seront générées côté client.
Exercice 3: MOM-JMS (6 points --1,5 +4,5)
Partie I : QCM
1) Lesquelles concernant JMS sont correctes? (en 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.
Publicité
d) JMS ne depend 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.
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.
3) Qu’est-ce que JNDI ? A quoi sert-il lorsqu’il est utilisé avec JMS ?
3
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
Partie II. Problème JMS (1+1,5+1+1)
Ci-dessous des bouts de code d’un programme de chat en JMS.
public class Chat implements javax.jms.MessageListener
{
…
public Chat(String topicName, String username, String password)
throws Exception
{
// Obtain a JNDI connection
Properties env = new Properties( );
// ... specify the JNDI properties specific to the vendor
InitialContext jndi = new InitialContext(env);
// Look up a JMS connection factory
……………………………………………… conFactory =
(………………………………………………)jndi.lookup("JmsTopicConnectionFactory");
// Create a JMS connection
……………………………………………… connection =
conFactory.createTopicConnection(username,password);
// Create two JMS session objects
TopicSession pubSession =
…………………………………………….createTopicSession(false,
Session.AUTO_ACKNOWLEDGE);
TopicSession subSession =
…………………………………………...createTopicSession(false,
Session.AUTO_ACKNOWLEDGE);
// Look up a JMS topic
Topic chatTopic = (Topic)jndi.lookup(topicName);
…
// Set a JMS message listener
receiver.setMessageListener(this);
4
…
1) De quel modèle de messagerie s’agit-t-il ? Justifiez et rappelez le principe de ce modèle.
2) Complétez le code en remplissant les vides en pointillés.
3) Que peut être le mode de consommation de messages ? Rappelez brièvement le principe.
4) Est-ce que la réception dans ce programme est synchrone ou asynchrone ? Justifiez.
Bonne Réflexion
5
Proposition de correction de l’exam SAR du 7/5/2015
Exercice 1 : NFS (7 points—1+3+3)
Partie I : Questions à choix multiple
1) Quel système de fichiers distribués supporte le modèle de transfert complet?
(a) NFS
(b) GFS --Google File System
(c) AFS
(d) aucun
0,5 pt
NFS, GFS et AFS sont des systèmes de fichiers qui supportent des transfert
par partie (bloc, chunk)
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é?
(a) NFS
(b) GFS
(c) AFS
(d) HDFS
0,5 pt GFS et HDFS (open implementation de GFS, hadoop dist. File system)
sont des systèmes de fichiers distribués qui mettent les métadonnées dans un
serveur de données séparé (Master dans GFS et NameNode dans HDFS).
Partie II : Questions générales (0,5+0,5+1+0,5+0,5)
1) Quels sont les services de niveau inférieur nécessaires au protocole NFS ?
NFS est un protocole au-dessus des couches RPC (remote procedure call,
protocole de communication par requête/réponse) et XDR (eXchange Data
representation, protocole universel d’échange de données) 0,25 pt + 0,25 pt
2) Que signifie la commande suivante : mount -t nfs4 192.168.1.3:/tmp /partage
Monter par le serveur de fichiers nfs4 de la machine distante dont le numéro
@IP 192.168.1.3 la sous-arborescence /tmp sur le répertoire /partage de
0,5 pt
la machine cliente (où est tapée cette commande)
6
3) Donnez la commande qui exporte tous les répertoires listés dans /ect/exports
exportfs –a
0,75 pt (cmde) + 0,25 pt (option)
cette commande réalise l’export de tous les répertoires listés dans /etc/exports.
4) Quel est le rôle du fichier /etc/fstab ? de quel côté est-il utilisé ?
Le fichier /etc/fstab répertorie les systèmes de fichiers susceptibles d'être
Publicité
montés sur votre arborescence (montage automatisé). /etc/fstab est utilisé
du côté client
0,5 point
Syntaxe : device mount-point type mount-options
5) Donnez la commande qui liste les répertoires exportés par le serveur ?
Showmount –e
0,5 point
Partie III (1+0,5+0,5+1)
On souhaite mettre en place un serveur NFS sur la machine popeye.ensi.tn qui exporte le répertoire
/dirs/public en lecture seule sur toutes les machines du domaine ensi.tn, et le répertoire /dirs/private
en lecture-écriture sur la machine olive. ensi.tn
1) Indiquez le contenu du fichier /etc/exports sur la machine popeye
/dirs/public
/dirs/private
*.ensi.tn(ro)
olive.ensi.tn(rw)
0,5 point
0,5 point
2) On redémarre le serveur NFS à l'aide de la commande service nfs restart. En déduire les
conséquences.
Prise en compte des modif. Dans /etc/exports c-à-d exporter les répertoires
spécifiés avec les options indiquées…..
0,5 point
3) Indiquez la commande à effectuer sur la machine Folla.ensi.tn pour monter le répertoire partagé
public dans /mnt/popeye.
mount -t nfs popeye.ensi.tn:/dirs/public /mnt/popeye
0,5 point
4) Dire comment la machine Folla peut auto-monter ce répertoire à chaque redémarrage de la
machine.
7
Vérifier tout d’abord que le nfsd est lancé et puis rajouter dans /etc/fstab de la
machine Folla la ligne suivante :
#syntaxe ligne: device mountpoint fs-type options dump fsckorder
popeye.ensi.tn:/dirs/public /mnt/popeye nfs ro 0 0
1 point
Exercice 2 : Web services (7 points— 2 + 5)
Partie I. QCM: Les questions ne sont pas forcément à réponse unique (mais il y en a toujours
au moins une de possible !). Justifiez vos réponses :
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 le serveur de nommage pour les web services soap 0,5 pt
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éponses a (certainement), b,d: wsdl codé en xml et en quelque sorte, le service
web joue un peu l’équivalent d’une interface Java parce qu’il montre explicitement
quelles méthodes (opérations) avec quels paramètres d’entrée et de sortie il faut
leur passer. Il contient aussi la balise service
1 pt si 3/3 réponses correctes et 0,5 si 2/3 correct sinon 0
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éponses a,b,c: l’entête est optionnelle alors que le corps est obligatoire
0,5 pt si 3/3 réponses correctes et 0,25 si 2/3 correct sinon 0
8
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 b oui et non ! car en fait un portType peut contenir plus d’une
opération. Annuler cette question!!!!
Partie II. JAX-WS (0,5+1,5+1+0,5+0,5+1)
Soit le service web BanqueWS qui permet de réaliser 3 opérations :
CreerCompte qui rend un objet de type Compte ;
CrediterCompte qui a deux paramètres: un objet Compte et la somme à verser
dans ce compte ;
DebiterCompte qui a deux paramètres: un objet Compte et la somme à débiter de
ce compte.
Supposons que ce service web est implémenté en java et déployé avec JAXWS.
1) Comment doit être l’objet Compte ?
Serializable
0,5 pt
2) Sans écrire le publisher, dire quelle est la méthode utilisée pour la publication du web service. Et
dire comment vérifier la génération automatique du fichier wsdl correspondant ?
Endpoint endpoint = Endpoint.publish(URI, objet)
1 pt
Vérifier la génération automatique du fichier wsdl via le web browser avec
http://localhost:8888/InterfaceObjet?wsdl
0,5 pt
3) Combien d’opérations et de messages vont contenir le fichier wsdl généré ? Justifiez.
3 opérations et 6 messages (3 request + 3 response)
1 pt
4) Dire Quel est le but d’avoir un outil comme SoapUI?
Outil le plus utilisé pour tester les web services sans avoir recours à
écrire un client
Publicité
0,5 pt
9
5) Quel est l’outil qui peut être utilisé par le client pour générer l’ensemble des classes qui seront
utilisées pour l’invocation des opérations du web service à distance ?
0,5 pt
1 pt
wsimport
6) Citez 4 classes parmi celles qui seront générées côté client.
BanqueWSService.class/java
CréerCompte.class/java
CéerCompteResponse.class/java
Compte.class/java
ObjectFactory.class/java
…
Exercice 3: MOM-JMS (6 points --1,5 +4,5)
Partie I : QCM
1) Lesquelles concernant JMS sont correctes? (en 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 depend 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.
Correct b,c,e
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.
Correct c
3) Qu’est-ce que JNDI ? A 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.
10
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
Correct a,b,f
Partie II. Problème JMS (1+1,5+1+1)
Ci-dessous des bouts de code d’un programme de chat en JMS.
public class Chat implements javax.jms.MessageListener
{
…
public Chat(String topicName, String username, String password)
throws Exception
{
// Obtain a JNDI connection
Properties env = new Properties( );
// ... specify the JNDI properties specific to the vendor
InitialContext jndi = new InitialContext(env);
// Look up a JMS connection factory
0,25 point + 0,25 point
TopicConnectionFactory conFactory =
(TopicConnectionFactory)jndi.lookup("JmsTopicConnectionFactory");
// Create a JMS connection
0,5 point
TopicConnection connection =
conFactory.createTopicConnection(username,password);
// Create two JMS session objects 0,25 point + 0,25 point
TopicSession pubSession = connection.createTopicSession(false,
Session.AUTO_ACKNOWLEDGE);
TopicSession subSession = connection.createTopicSession(false,
Session.AUTO_ACKNOWLEDGE);
// Look up a JMS topic
Topic chatTopic = (Topic)jndi.lookup(topicName);
…
// Set a JMS message listener
receiver.setMessageListener(this);
…
11
1) De quel modèle de messagerie s’agit-t-il ? Justifiez et rappelez le principe de ce modèle.
Modèle publish/subscribe: car dans la création de connection/session il y a
createTopicConnection/createTopicSession. On rappelle qu’un message
(topic) publié par le publisher est diffusé à tous les souscripteurs
(publishers). 0,5 point pub/sub + 0,5 point justif.
2) Complétez le code en remplissant les vides en pointillés.
Voir code modifié ci-dessus
3) Que peut être le mode de consommation de messages ? Rappelez brièvement le principe.
On peut avoir deux modes de consommation de messages : pull(explicite)
avec notification et push(implicite) 0,5 pt/mode
4) Est-ce que la réception dans ce programme est synchrone ou asynchrone ? Justifiez.
Réception de message asynchrone par le souscripteur (ici dans le code
receiver ou encore consommateur) puisqu’il y a la présence du listner. La
dernière ligne du code receiver.setMessageListener(this)
0,5
pt
pour
asynchrone + 0,5 pt pour justif.
------------------------------------- FIN correction ----------------------------------------------
12