Exam on Distributed Systems and Applications

Page 1 sur 12Lecteur de document UniversityLib

Exam on Distributed Systems and Applications

Distributed Systems, Web Services, NFS, SOAP, WSDL · exam

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