Jini
Installation de Jini

Ces explications supposent que vous utilisez le JDK 1.3 et Jini version 1.1 installés respectivement dans les répertoires D:\jdk1.3 et D:\jini1_1.
J'ai défini la variable d'environnement JINI_HOME avec la valeur "d:\jini1_1", à l'aide de la boîte de dialogue "Propriétés système" de ma machine Windows NT 2000. D'autre part, la variable d'environnement path devra contenir l'accès à D:\jdk1.3\bin.

Pour vérifier que tout est bien installé, on pourra démarrer les services Jini par l'utilitaire StartService :

java -cp %JINI_HOME%\lib\jini-ext.jar;%JINI_HOME%\lib\jini-examples.jar com.sun.jini.example.launcher.StartService

Pour cela, il vous faut d'abord ouvrir le fichier de propriétés jini11_win32.properties situé dans le répertoire D:\jini1_1\example\launcher.
Dans les pages à onglet, il suffira de remplacer C:\files par D:\ pour donner le chemin d'accès à l'installation de Jini.
Dans les pages "Reggie" et "LookupBrowser" du classeur, il faut également remplacer hostname pour la valeur de l'entrée "Codebase" par le nom de la machine qui permettra le téléchargement des fichiers nécessaires.
Assurez-vous aussi que la valeur de l'entrée "Log directory" ne contient que des noms de répertoires existants.
A noter que l'on peut préciser pour rmid l'utilisation d'un fichier de règles de sécurité, comme par exemple D:\jini1_1\example\lookup\policy.all. Par défaut aucun fichier de règles de sécurité n'est fourni (none).
Démarrez alors dans l'ordre, le serveur HTTP, le démon activation (RMID) et enfin le service lookup (Reggie).
Vous pouvez ensuite exécuter l'application LookupBrowser à partir de la page "Run" ; celui-ci doit afficher dans sa fenêtre :

Groups: <all>
1 registrar, not selected

Sélectionnez alors dans le menu "Registrar", l'article de menu ayant comme nom celui de votre macine ; la partie inférieure de la fenêtre doit présenter au moins un service Jini, reggie, s'exécutant sur votre machine.


Démarrer les services Jini par la ligne de commande

Pour permettre le téléchargement de code, il faut exécuter un serveur web quelque part sur le réseau qui pourra fournir le code nécessaire pour les applications. On pourra utiliser celui de Jini fourni dans le package tools.jar :

java -jar %JINI_HOME%\lib\tools.jar -port 8080 -dir %JINI_HOME%\lib -verbose

Démarrer le démon RMI Activation est tout aussi simple :

rmid -J-Djava.security.policy=%JINI_HOME%\example\lookup\policy.all

Une instance de ce démon doit être exécutée sur toute machine sur laquelle réside des objets activables, ce qui inclut le service Jini reggie, le gestionnaire de transaction et JavaSpaces.

Démarrer enfin le service lookup par :

set POLICYFILE=%JINI_HOME%\example\lookup\policy.all
set JARFILE=%JINI_HOME%\lib\reggie.jar
set CODEBASE=http://bgoetzmann:8080/reggie-dl.jar

java -jar %JARFILE% %CODEBASE% %POLICYFILE% d:\reggie_log

Les fichiers de règles de sécurité indiquent quelles seront les ressources accessibles par un programme à l'exécution.
Ici nous voulons exécuter la fonction main contenue dans le fichier archive reggie.jar, ce qui est précisé par l'option -jar.
Codebase précise où le code qui sera téléchargé par les clients réside, notamment pour accéder à reggie : il s'agit d'une URL, avec comme nom d'hôte, la machine exécutant le serveur web. Il convient de remplacer bgoetzmann par le nom de la machine adéquate.
Les deux derniers arguments sont le répertoire réservé au log de reggie et le groupe pour lequel le service est accessible.


Ecriture d'un service Jini

Le livre Core Jini, de W. Keith Edwards, est un excellent livre puisque l'auteur couvre tout Jini et fournit de nombreux exemples de programmes.
D'autre part, l'auteur met à disposition sur son site web, une bibliothèque de classes, le Service Writer Toolkit (SWT), destinée à écrire des services Jini en offrant des tâches communes à la plupart des services Jini (voir la rubrique ressources ci-desous).

Je propose le téléchargement de fichiers source Java d'un simple service Jini, dont la classe est basée sur la classe BasicUnicastService du SWT, ainsi que celui d'une application cliente utilisant ce service.
Ce service est identique à celui du chapître 5 de Core Jini, pour lequel l'objet proxy communique avec le service par RMI pour renvoyer une chaîne de caractères au travers d'une interface partagée entre le client et le service. Le but de service est de présenter l'utilisation du SWT.
La classe BasicUnicastService prend en charge l'exécution d'un serveur web pour permettre le chargement des classes utiles aux clients.
Comme le service comporte un objet serveur RMI, Backend, il est nécessaire d'appliquer le compilateur de stubs rmic sur cette classe et de rendre les classes générées disponibles pour les clients.


Ressources

Téléchargement de Jini :
http://developer.java.sun.com/developer/products/jini/

Le Service Writer Toolkit de W. Keith Edwards est disponible à l'adresse :
http://www.kedwards.com

Utilitaires au développement Jini par Iain Shigeoka :
http://sourceforge.net/projects/jini-tools

Les sources du service Jini utilisant la classe BasicUnicastService, et celui d'un client Jini :
srcjini.zip

Les services de base de Jini peuvent être démarrés avec l'application graphique LookupRunner, en version beta, de Bald Mountain Software. Cette version ne fonctionnera plus au 1er janvier 2001.
http://www.bald-mountain.com/jini.html

Sommaire

Installation de Jini
Démarrer les services Jini par la ligne de commande
Ecriture d'un service Jini
Ressources

Début

Copyright © 2003 OBJECT-EVERYWHERE. Tous droits réservés | Bertrand Goetzmann