suivant: Comment développer une application
monter: JavAct v0.5.0
précédent: Installation
  Table des matières
Sous-sections
Maintenant que la bibliothèque est correctement installée, nous allons compiler et exécuter un exemple, le classique « Hello World » en mode réparti. Les commandes sont données au format Linux7, mais grâce à la portabilité de Java, la façon de procéder est normalement identique pour d'autres systèmes8.
Pour exécuter une application JAVACT en mode réparti, il faut disposer d'un système d'accueil sur chacune des places9 potentiellement accessibles aux agents mobiles.
Une place est localisée par une URL (complète, adresse IP, nom de machine en réseau local...) et éventuellement un numéro de port. Chaque place peut mettre à disposition des agents mobiles un ensemble d'adresses d'autres places directement accessibles. Ces informations sont stockées dans un fichier (places.txt), qui contient pour chaque ligne une adresse de place.
Le lancement se fait grâce au script javactvm (dans le sous-répertoire bin), qui s'utilise de la manière suivante :
javactvm [chemin d'accès au fichier places.txt] [port]
où [chemin d'accès] est facultatif. S'il est précisé, il doit être impérativement sous forme absolue, sinon le fichier places.txt dans le répertoire courant sera utilisé,
et où [port] (
) est facultatif (il vaut 1099 par défaut).
Exemple - Dans /home/leriche/JavActv050/bin :
javactvm /home/leriche/JavActv050/places.txt 2010
Starting javact : 2010
javact v0.5.0 [chambord:2010] - 5:25:13 PM
Si dans un réseau local une machine sur laquelle on aura besoin d'effectuer des accès depuis l'extérieur possède un nom réseau local (hostname) différent de son nom réseau internet, une exception liée au fonctionnement de RMI10 sera levée (java.net.UnknownHostException après une instruction Naming.lookup()) et l'application ne pourra pas fonctionner correctement. Pour remédier à cela, il est possible de passer en paramètre du script javactvm l'option -Djava.rmi.server.hostname= suivie de l'adresse externe de la machine (URL ou IP). Par exemple sur une machine appellée kinder sur un réseau local accessible depuis l'exterieur par zerezo.com, il faut passer le paramètre -Djava.rmi.server.hostname=zerezo.com.
Une fois l'application compilée, le lancement est facilité par le script javact (dans le sous-répertoire bin) qui prend en paramètre le nom de la classe principale et ses éventuels paramètres. Si les classes nécessaires à l'exécution de l'application ne sont pas fournies sur chacun des sites d'exécution, il faut donner une adresse où chaque machine virtuelle pourra les récupérer11. Cela se fait en passant comme premier argument -Djava.rmi.server.codebase= suivi d'une ou plusieurs localisation des fichiers entre " ", qui peuvent être des répertoires, des archives jar, etc.
S'il existe un système de fichiers partagés (type nfs), on utilisera par exemple :
-Djava.rmi.server.codebase=
"file:/home/leriche/JavActv050/examples/net/rmi/HelloWorld/"
(attention au '/' final !), on peut aussi utiliser un serveur web externe, par exemple :
-Djava.rmi.server.codebase="http://noman.zerezo.com/JavAct/HelloWorld/"
- Après avoir lancé un système d'accueil sur caraibe, chambord et chambord:1100, on se place
dans le répertoire /home/leriche/JavActv050/examples/net/rmi/HelloWorld où se trouve le fichier HelloWorld.class. On peut lancer l'exécution du programme HelloWorld en passant les références des 3 places en paramètre (ceci provoque l'affichage de « Hello » sur la première place, de « Wonderful » sur la deuxième et de « World » sur la troisième) :
/home/leriche/JavActv050/bin/javact
-Djava.rmi.server.codebase=
"file:/home/leriche/JavActv050/examples/net/rmi/HelloWorld/"
HelloWorld
caraibe chambord chambord:1100
Si l'application est construite avec des paquetages, il faut se placer dans le répertoire supérieur au paquetage pour lancer l'application (comme pour les programmes java standard). Par exemple, si le programme précédent était dans un paquetage examples.net.rmi.helloWorld, il faudrait se placer dans le répertoire supérieur à examples puis appeller le script javact avec :
~/examples>/home/leriche/JavActv050/bin/javact
-Djava.rmi.server.codebase="file:/home/leriche/JavActv050/"
examples.net.rmi.helloWorld.HelloWorld
caraibe chambord chambord:1100
Pour les utilisateurs qui souhaitent modifier la bibliothèque pour leur propre usage, nous avons inclus un script de compilation build (dans le sous-répertoire bin) qui archive toutes les classes compilées dans le fichier javact.jar, placé dans le répertoire JavActv050.
Exemple - Dans /home/leriche/JavActv050/bin : build
Compiling javact ...
Compiling Creator for RMI ...
Compiling ReceiveCt for RMI ...
Compiling ClientSideAnswerBackImpl for RMI ...
Building javact.jar...
[...]
Done !
suivant: Comment développer une application
monter: JavAct v0.5.0
précédent: Installation
  Table des matières
javact@irit.fr