IPST-CNAM - par Jacques LAFORGUE

publicité
IPST-CNAM
Applications Distribuées cycle C
Lundi 19 Juin 2000
Avec document
Durée : 2 heures
Enseignant : Mr LAFORGUE
EXERCICES
1. Ecrire la classe VectorParcours qui hérite de la classe Java prédéfinie Vector. Cette classe
implémente les traitements suivant :
 public void initParcours() initialisation du traitement de parcours
 public Object first() retourne le premier élément de la liste
 public Object next() retourne l'élément suivant
 public Object nextDifferent() retourne le prochain élément différent (on suppose
que la liste est triée). Pour réaliser ce traitement vous devez utiliser une interface
Java que vous écrivez.
2. Questions de cours :
 Quelles différences essentielles, il y a-t-il entre une architecture Serveur/Client 2 points
(classique) et une architecture Serveur/Client 3 points ?
 A quoi sert le principe de "Serialisation" dans une architecture distribuée ? Dans quel autre
activité ce principe est-t-il utilisé ?
 Faites le schéma général d'architecture d'objets distribuée (RMI, CORBA, …) dans lequel
vous devez placer les éléments suivants : Client, Serveur, Skeleton, Stub, ORB. Donnez le
rôle de chacun de ces éléments.
PROBLEME1
En utilisant le protocole RMI de JAVA , nous nous proposons de réaliser un serveur de numéros de
téléphone, et un client.
Le serveur charge un fichier texte contenant le nom, le prénom et le numéro grâce à la primitive prédéfinie
suivante public Vector chargerNuméros(String NomFichier) qui retourne un vector Java contenant des
objets appartenant à la classe Contact. (Le contact est défini par le nom, prénom et numéro).
Le serveur doit réaliser le service suivant :
 accéder à un contact en fonction du nom et/ou du prénom
Le client s'exécute dans une fenêtre système (entrées/sorties standards) et appelle le service du Serveur.
Les paramètres de lancement du serveur:
java Serveur <machine> <port>
Les paramètres de lancement du client :
java Client <machine> <port>
Les classes que vous devez écrire sont Contact, Client, Serveur et l'interface ServeurImp.
1
Dans votre codage vous pouvez omettre les renvois d'exception (throws ....) et les lignes d' import.
Un serveur RMI doit hériter de la classe UnicastRemoteObject. L'interface des services doit hériter de la classe
Remote.
Les méthodes Java RMI sont :
static public void Naming.rebind(String adresseURL, UnicastRemoteObject serv);
+
Si vous devez utiliser une méthode Java dont vous ne vous rappelez pas la syntaxe avec précision, vous pouvez
l'inventer à condition que vous précisez son rôle et le rôle de ses paramétres.
Eléments de langage JAVA :
package <p>
import java.io.*;
import java.lang.*;
import java.net.*;
import java.util.*;
import java.rmi.*;
import java.rmi.server.UnicastRemoteObject;
import java.rmi.server.ServerNotActiveException;
import java.rmi.RMISecurityManager;
public class Serveur extends UnicastRemoteObject implements ServeurImp
Vector: addElement(Object) Object elementAt() size()
String: int compareTo(String)
new
public static void main(String args[])
public interface <i>
Naming.rebind(String)
ServeurImp services;
services = (ServeurImp)Naming.lookup(String)
DataInputStream datain=new DataInputStream(System.in);
System.out.print(String);
String datain.readLine();
Téléchargement