IUT Nancy Charlemagne Travaux Dirigés
Programmation Distribuée S4
Java et RMI – Annuaire
• Package à utiliser : java.rmi, java.rmi.registry
Récupérez le fichier TDAddressBook.zip dans l'ENT et décompressez-le sur votre machine.
Cette archive contient tout le nécessaire pour exécuter une mini-application client/serveur de
gestion d'un carnet d'adresses.
Elle contient 3 répertoires correspondant à des packages:
le package addressBookClient contient le code compilé de la partie cliente,
le package addressBookServer contient le code du serveur,
le package addressBook contient le source de l'interface et la classe utilisée dans
l'interface.
Pour rappel, prenez le temps de relire la partie du cours de Complément Java traitant des package et
classpath (disponible sur arche), vous allez vite être confrontés à des difficultés liées à ces
notions.
Exercice 1 :
Démarrez cette application à partir du répertoire dans lequel l'archive a été décompressée :
lancer rmiregistry (attention : le classpath DOIT être vide),
lancez le serveur (addressBookServer.AddressBookServer),
lancez le client. Le client reçoit en paramètre le nom de la machine serveur. Essayez avec
votre serveur (localhost) puis avec le même client, accédez au serveur de votre voisin.
Vérifiez que vous arrivez à vous connecter au serveur lancé par votre enseignant.
Écrivez les scripts permettant d’effectuer les bonnes opérations dans l'ordre (un script pour lancer
rmiregistry, un script pour le lancement du client, un pour le lancement du serveur).
Exercice 2 :
Créez un package monClient et écrivez votre propre client. Utilisez l'interface
AddressBook.java qui est fournie. SURTOUT NE LA MODIFIEZ PAS. Dans votre client,
faites quelques get pour récupérer des entrées, puis quelques add pour en ajouter. Vérifiez
que ces entrées sont bien insérées.
Le serveur est enregistré sous le nom 'AddressBook' dans l'annuaire rmiregistry (faites
particulièrement attention à l'orthographe et aux majuscules).
Faites valider votre client en vous connectant au serveur lancé par votre enseignant.
Exercice 3 :
Écrivez votre propre serveur dans un package monServeur.
Vous allez séparer le serveur en deux parties
une classe MonAddressBook chargée d'implémenter le service distant et de répondre aux
demandes du client
une classe LancerServeur contenant un main chargée de créer l'objet
MonAddressBook, le proxy et de l'enregistrer correctement.
La classe MonAddressBook doit implanter les méthodes de l'interface distante (rechercher une
entrée, ajouter une entrée). Elle fonctionne de la même manière qu'une classe habituelle (si ce n'est
qu'elle implémente une interface héritant de Remote) et correspond au code que le serveur
exécutera. Cette classe utilise un attribut privé Map<String,AddressBookEntry>
entrees, chargé de stocker les adresses des personnes connues dans l'annuaire.
La classe LancerServeur contient une méthode main chargée de créer puis d'exporter l'objet de
la classe MonAddressBook et d'enregistrer le proxy dans le rmiregistry.
Faites valider par votre enseignant qui devrait pouvoir se connecter à votre serveur.
Exercice 4 :
Tout reste assez simple lorsque le rmiregistry est lancé dans les répertoires contenant
les .class du serveur. Mais il arrive fréquemment que ce ne soit pas le cas (lorsqu'il y plusieurs
serveurs dans des répertoires différents par exemple, …)
Dans ces cas, il est nécessaire de préciser à l'enregistrement du proxy l'endroit trouver les
fichiers nécessaires au proxy. Cela se fait grâce à la propriété java.rmi.server.codebase
qui désigne l'URL où trouver ces fichiers.
Il est donc nécessaire de spécifier le codebase lors du lancement du serveur avec l'option
-Djava.rmi.server .codebase=url
l'URL doit avoir une forme valide, à savoir par exemple file:///c:/temp/bin/
il s'agit de slash et non d'antislash
le répertoire ne doit pas contenir d'espace.
Créez un fichier jar contenant le package addressBook, supprimez le répertoire addressBook
et lancez le serveur en lui passant le bon classpath et le bon codebase (utilisez le .jar).
1 / 2 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !