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