Exercices - Introduction à RMI

Exercice 1 - client pour un service de chat (discussion en ligne)

La plupart des méthodes nécessaires pour les fonctions RMI appartiennent à la classe java.rmi.Naming. Il est fortement conseillé de consulter la documentation de cette classe (javadoc : http://java.sun.com/javase/6/docs/api/) pour réaliser cet exercice.

Vous allez écrire une classe qui se connecte en tant que client à un serveur de chat. Le serveur existe et s'exécute à une adresse qui vous sera donnée pendant le TP.

  1. Téléchargez l'interface IChatServer.java. Cette interface est implémentée par le serveur en route. Du côté client, vous récupérerez une référence au serveur sous la forme d'une instance de IChatServer.
  2. Écrivez une classe ChatClient, constituée d'une seule méthode main. Dans cette méthode, une boucle demandera régulièrement à l'utilisateur d'entrer du texte. Si ce texte est "quit", le programme client se terminera. Sinon vous établirez une connexion au serveur pour lui envoyer le texte saisi et vous afficherez la chaîne renvoyée en retour.

Rappel Java : Pour récupérer du texte saisi par l'utilisateur, vous pouvez utiliser les instructions suivantes :

try {
    BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
    System.out.println("Entrez du texte");
    String str = reader.readLine();
    ...
} catch (IOException ex) {
    ...
}

Exercice 2 - serveur pour recevoir les messages publiés

Dans cet exercice vous allez écrire un client au service de chat qui joue également un rôle de serveur pour recevoir les messages envoyés par tous les participants.

  1. Une interface graphique à compléter vous est fournie : ChatWindow.java. Téléchargez également l'interface IRemoteChatClient.java que devra implémenter votre serveur.
  2. Écrivez le code relatif à une connexion client qui publie un message sur la zone de chat. Le code correspondant ressemble à ce qui à été réalisé dans le premier exercice et se situe dans la méthode actionPerformed. Pour tester si votre code fonctionne bien, utilisez la classe de l'exercice précédent pour consulter le contenu du serveur.
  3. Écrivez une implémentation de l'interface IRemoteChatClient. Une instance de cette implémentation doit être crée à l'endroit indiqué dans le code. votre classe doit s'enregistrer auprès du registre rmi, puis signaler son existence à l'aide de la méthode distante addRemoteChatClient.
  4. À chaque fois qu'un message est envoyé, la méthode ajouteTexte de votre implémentation sera invoquée. Faites-en sorte que votre fenêtre affiche le message ajouté.
  5. Pour exécuter votre classe, n'oubliez pas d'indiquer dans la ligne de commande un fichier policy pour la politique de sécurité à employer ainsi que le répertoire contenant le code su serveur (voir le cours pour des exemples).

Une solution à ces exercices est proposée ici.


Vercouter Laurent