JXTA TP 1 - 2 - Université de Reims Champagne

publicité
Université de Reims Champagne-Ardenne
TIP2P : Techniques Internet et systèmes pair à pair
Année 2007/2008
JXTA
TP 1 - 2
1 Informations Préliminaires
1.1 Comment compiler et exécuter un programme JXTA
1.1.1 Si vous utilisez Eclipse comme environnement de travail
1) Créer sous éclipse un nouveau projet TP1-TIP2P à partir de l’archive tp2-tip2p.zip dézippée.
Ce projet se décompose en deux répertoires :
● lib contient l’ensemble des fichiers .jar nécessaires à la compilation et l’exécution de vos
programmes sous JXTA.
● test contient les fichiers de prise en main de JXTA
● propagate contient les fichiers pour la dernière partie des expériences
1.1.2 Si vous préférez la compilation par ligne de commande
Dézippez l'archive tp1-tip2p.zip.
Pour compiler, vous utilisez javac avec la bibliothèque jxta.jar dans le classpath
javac -classpath ./lib/jxta.jar test/fichier.java
Pour exécuter l'application il faut rajouter, aussi les autres bibliothèques dans le répertoire lib.
java -classpath ./lib/jxta.jar:./lib/bcprov-jdk14.jar:(...):.
test.fichier
1.2 Configuration au premier lancement de JXTA
Pour le premier lancement de JXTA vous obtenez une fenêtre de configuration qui est composée de
quatre sous menu : Basic, Advanced , Rendezvous/Relays et Security.
1) Dans le menu Basic vous devez saisir le nom du Peer (figure 1).
2) Dans le menu Advanced vous choisissez l'adresse IP de la machine (dans le menu déroulant) et dans
la partie HTTP Settings vous décochez le point Enabled (figure 2).
3) Dans le menu Rendezvous/Relays vous pouvez laisser les options par default (figure 3).
4) Dans le menu Security il faut donner un nom d'utilisateur et le mot de passe qui vous sera demandé à
chaque fois que relancer votre application (figure 4).
Figure 1: Configuration de base
Figure 2: Configuration Avancée
Figure 4: Configuration du
Rendezvous/Relay
Figure 3: Configuration mot de passe
1.3 Documents utiles
La documentation javadoc JXTA est disponible à l’adresse suivante :
https://jxta-docs.dev.java.net/nonav/jxse-javadoc/2.5/jxse/api/index.html
Un guide du programmer est disponible à l’adresse suivante :
https://jxta-guide.dev.java.net/source/browse/jxta-guide/trunk/src/guide_v2.5/
http://stromboli3.int-edu.eu/~defude/P2P/JXTA/
2 Activités
2.1 Helloworld
Analysez, testez et commentez la classe HelloWorld.java. Idéntifiez les structures de base pour
déclarer un peer jxta, pour se connecter à un groupe et afficher un advertisement.
ATTENTION : pour le premier lancement de JXTA, il est nécessaire de configurer votre machine.
Remarque : Si tout s’est bien passé, un répertoire .jxta a été créé dans votre répertoire courant.
2.2 Créer un groupe
Analyser et modifier le code de la classe GroupCreate.java, afin de créer votre propre groupe.
Testez et commentez la classe !
2.3 Découverte de groupes de paires
1. Exécutez deux instances de PeerDiscovery (dans des répertoires ou des projets différents).
Quel est le résultat ?
2. Exécutez deux instances de GroupDiscovery (dans des répertoires différents). Quel est le
résultat ? Expliquez.
3. Exécutez une instance de GroupDiscovery et une instance de GroupCreate (dans des
répertoires différents). Quel est le résultat maintenant ?
4. Pourquoi le groupe crée dans la méthode GroupDiscovery.startJxta() n'est pas affiché ?
2.4 Caches
Modifiez le code de GroupCreate pour changer le nom de votre groupe.
1. Exécutez une instance de GroupDiscovery et une instance de GroupCreate (dans des
répertoires différents). Quels sont les groupes affichés (la découverte peut prendre un certain
temps) ?
2. Effacez le répertoire .jxta/cm (le répertoire où est stocké le cache des ressources)
3. Refaire l'étape 1
4. Modifiez
le
code
de
GroupDiscovery
afin
d'utiliser
la
méthode
getLocalAdvertisements(int type, String attribute, String value). Quelle est
la différence entre cet appel et celui de getRemoteAdvertisements() ?
2.5 Pipe de communication entre deux pairs
Cet exemple montre comment utiliser des pipes pour envoyer des messages entre deux pairs
JXTA et comment implémenter l'interface Rendezvous Listener.
Deux applications séparées sont utilisées pour cet exemple :
●
●
: lit le fichier de publication examplepipe.adv, crée un input pipe et écoute
les messages dans ce pipe.
PipeExample : lit le fichier de publication examplepipe.adv, crée un output pipe et envoie les
messages dans ce pipe.
PipeListener
1. Analyser,
tester
et commenter le code des classes PipeExample.java et
PipeListener.java. Idéntifiez les procédures liées à l'envoi et à la réception des messages,
ainsi qu'à la déclaration des ressources (pipe).
2.6 Diffusion
Les pipes utilisés jusqu'à présent ont servi uniquement pour la communication entre deux
peers. Afin d'envoyer un message à plusieurs peers, nous pouvons utiliser un « PropagatePipe ».
1. Cherchez dans la documentation une description des caractéristiques des PropagatePipe.
2. Allez dans le répertoire propagatePipes. Étudiez attentivement le code de sender et
receiver, et indiquez dans le rapport s'il existent des différences entre la déclaration d'un
PropagatePipe et d'un « Pipe standard ».
3. Faites tourner sender et deux instances de receiver (répertoires receiver1 et receiver2) et
décrivez ce que vous observez.
4. À cause d'un oubli, les messages envoyés ne portent aucune information. Corrigez le code
de sender. Vous pouvez vous inspirer du code de PipeExample (et faites attention à
envoyer des informations dans le format attendu par receiver).
3 Rapport
Envoyez un fichier ZIP avec vos rapports en format PDF et le code que vous avez écrit
(exercice 2.6) à l'adresse [email protected]. N'oubliez pas de mettre le nom des
membre du binôme.
Téléchargement