Java Avancé - Cours 2
Transcription
Java Avancé - Cours 2
Java Avancé - Cours 2 Solution des exercices 1 Exercices Exercice 2.1 Q1 Récupérer l’archive http://www.derepas.com/java/cours2_exercice_1.jar comme spéficié dans la fiche pratique Importer un fichier jar http://www.derepas.com/java/import_jar. Sous Unix : Editer le fichier build.xml et changer à la ligne 9: /chemin/vers/les/sources en /home/monlogin/cours2 exercice 1. Suivent les solutions en ligne de commande (unix ou windows), avec Netbeans et avec Eclipse. Solution en ligne de commande >ant Buildfile: build.xml init: compile: [mkdir] Created dir: /home/monlogin/cours2_exercice_1/build [mkdir] Created dir: /home/monlogin/cours2_exercice_1/build/classes [javac] Compiling 5 source files to /home/monlogin/cours2_exercice_1/build/classes rmic: [rmic] RMI Compiling 1 class to /home/monlogin/cours2_exercice_1/build/classes BUILD SUCCESSFUL Total time: 2 seconds On lance le serveur à l’aide des commandes suivantes: >cd build/classes >rmiregistry & >cd ../.. >ant serveur Buildfile: build.xml init: compile: rmic: serveur: [java] FruitsEtLegumes a ete enregistre dans le serveur de nom. On peut alors lancer le client: >ant client Buildfile: build.xml init: compile: rmic: Solution des exercices Java Avancé - Cours 2 1/5 client: [java] Il y a 2 pomme(s) dans le panier. BUILD SUCCESSFUL Total time: 1 second L’écran du serveur affiche alors : [java] Il y reste 8 pomme(s) en rayon Si on relance à nouveau le client le nombre de pommes baisse encore. Solution avec Netbeans 4.1 Tout d’abord télécharger le fichier http://www.derepas.com/java/cours2_exercice_1.jar, par exemple dans le répertoire c:\exojava. Décompresser l’archive à l’aide de la commande jar xvf cours2 exercice 1.jar : Faire un nouveau projet dans netbeans : Catégorie : Général, Projects : Java Project with existing ant script. Clique sur next et rentrer le répertoire où l’archive a été décompréssée : Solution des exercices Java Avancé - Cours 2 2/5 Il suffit alors de cliquer sur next. Pour compiler il suffit alors de lancer la cible compile dans le fichier build.xml : On peut alors observer les fichiers créés : Solution des exercices Java Avancé - Cours 2 3/5 On peut alors lancer rmiregistry : Dans le fichier build.xml Editer le fichier build.xml et changer à la ligne 9: /chemin/vers/les/sources en c:/exojava/cours2 On peut alors lancer le serveur, ce qui produit le résultat suivant : Puis le client : On peut constater que le nombre de pommes à baissé dans la fenêtre serveur. En relancant le client on voit que le nombre de pommes diminue encore. Q2 La solution est disponible à l’url: http://www.derepas.com/java/cours2_exercice_1_solution.jar Exercice 2.2 Q1 On mets les interfaces dans le package chat.interfaces, ce qui donne pour le client : Solution des exercices Java Avancé - Cours 2 4/5 package chat.interfaces; public interface ClientInterface extends java.rmi.Remote { void notifie(String nomUtilisateur, String phrase) throws java.rmi.RemoteException; } Et pour le serveur : package chat.interfaces; public interface ServeurInterface extends java.rmi.Remote { boolean ecrit(String nomUtilisateur, String phrase) throws java.rmi.RemoteException; } Q2 La solution de l’exercice est téléchargeable à l’URL: http://www.derepas.com/java/cours2_exercice_2. jar. La “ruse” de l’exercice est que le client de chat et le serveur de chat sont tous les deux des serveurs RMI : • le serveur de chat car la méthode ecrit peut être appelée par n’importe quel client de chat (qui est alors un client RMI). • le client de chat cat le méthode notifie peut être appelée par le serveur (qui est alors un client RMI). Le serveur est implémenté dans une seule classe : chat.serveur.ServeurImpl. Le client quant à lui est implémenté dans deux classes situées dans le package chat.client. Une classe, ClientImpl sert à implémenter la partie serveur RMI du client de chat, l’autre LireClavier sert à implémenter l’envoie des message vers le serveur de chat. Pour lancer le serveur, il faut après avoir mis à jour la cible init du fichier build.xml taper la liste de commandes suivantes : jar xvf cours2_exercice_2.jar cd cours2_exercice_2 ant cd build rmiregistry & cd .. ant serveur # decompresse l’archive # compile dans le repertoire build # lance rmiregistry dans le bon repertoire # lance le serveur de chat Pour lancer un client sur une autre machine, il faut après avoir mis à jour la cible init du fichier build.xml taper la liste de commandes suivantes : jar xvf cours2_exercice_2.jar cd cours2_exercice_2 ant cd build rmiregistry & cd .. ant clientrmi & ant lecture Solution des exercices # decompresse l’archive # compile dans le repertoire build # lance rmiregistry dans le bon repertoire # lance la partie serveur RMI du client de chat # lance la partie client RMI du client de chat Java Avancé - Cours 2 5/5