EXAMEN de Rattrapage
Systèmes et Applications Répartis
Classe/Filières:
Durée
:
Responsables
II2- SLE & RSR
2h00
: F. Najjar & N. Ben Azzouna
24/06/2014
Date:
Documents: Non autorisés
Nb. Pages: 6
Prière de lire attentivement l’énoncé.
On demande des réponses concises mais claires et précises.
Exercice 1 : Java-RMI (7 points — 1+2+2)
Les deux questions suivantes sont indépendantes
1) Ce schéma représente les différentes étapes de l'exécution du fonctionnement d'un objet
distribué utilisé par un client.
a) Indiquez ce que chaque lettre signifie.
b) Les mettre dans l'ordre temporel de l'exécution.
1
2) On suppose donnée la classe suivante :
On considère le programme suivant :
a) Quel est l'affichage produit par le programme ?
L’affichage est : 2 puis 3
Publicité
b) On suppose donnée une interface distante RLocal proposant une
méthode inc de même signature que celle de l'objet Local, c'est-à-dire
prenant comme paramètre un objet Entier et ne renvoyant rien. Soit donc
:
Ecrivez l'équivalent du main de la classe Local, avec comme seule différence
l'utilisation de l'objet distant d'interface RLocal (on supposera qu'une
implantation de cette interface est stockée dans le rmiregistry avec comme
nom //localhost/ILocal).
public static void main(String[] args) {
try {
// Récupération d'un stub sur l'objet RLocal.
RLocal l= (RLocal) Naming.lookup(“//localhost/ILocal“);
Entier y=new Entier(2);
System.out.println(y.n);
l.inc(y);
System.out.println(y.n);
2
} catch (Exception exc) { … }
}
c) Peut-on déterminer complètement l'affichage du main réalisé dans la
question précédente sans connaître la programmation de l'objet distant ?
Si oui, quel est cet affichage et pourquoi peut-on le déterminer ?
Oui parce que l’objet Entier est un objet local au client qui passé par
valeur lors de la méthode inc de RLocal (objet sérialisable) donc
l’incrémentation sera faite sur un clone de y côté serveur et l’objet y côté
client ne sera pas modifié d’où l’affichage est :
Publicité
2 puis 2.
Exercice 2 : MOM-JMS (5 points— 1,25+1,25+2,5)
1) Rappelez l’architecture d’un producteur-consommateur JMS
2) Complétez la figure suivante :
Message
Producer
Connection
Session
Message
Message
Consumer
3)
a) Afin d’aider à écrire le code d’une application Java permettant de dialoguer entre
plusieurs clients, un peu à l'image des systèmes de messagerie instantanée, faire
correspondre le commentaire au(x) appel(s)/instruction(s) (tableau ci-dessous) :
a)iii) ; b)iv) ; c)ii); d)i); e)vi); f)v)
Commentaires
a) Créer une session JMS
i) TopicConnection connection =
conFactory.createTopicConnection(username,password);
Instructions
b) Récupérer une fabrique
ii)
Properties env = new Properties( );
de connexion JMS
InitialContext jndi = new InitialContext(env);
Publicité
3
c) Récupérer le contexte
de nommage
iii)
TopicSession pubSession =
connection.createTopicSession(false,
d) Créer une connexion
iv)
TopicConnectionFactory conFactory =
Session.AUTO_ACKNOWLEDGE);
JMS
e) Créer un producteur de
messages
f) Récupérer un sujet
(TopicConnectionFactory)jndi.lookup("JmsTopicCon
nectionFactory");
v) Topic chatTopic = (Topic)jndi.lookup(topicName);
vi)
TopicPublisher publisher =
pubSession.createPublisher(chatTopic);
b) Donnez, en conséquence de la réponse à la question 3) la séquence d’une
portion du code du producteur de messages.
c); b) ; d); a); e); f)
4