Home
mon travail de diplôme
Contents
1. Ce gestionnaire est g n ralement tir d un fichier de configuration et ceci dans le but de pouvoir chan ger facilement le groupe au quel appartient le service de recherche d sir La seconde tape consiste d finir les crit res de recherche qui permettront de trouver le service ad quat Les crit res sont d finis par l interm diaire d un objet ServiceTemplate Cet objet est le petit fr re du Serviceltem dont nous avons parl pr c demment section 5 5 Le ServiceTemplate reprend les m mes champs qu un Service Item la diff rence que le proxy est remplac par le nom de l interface du service Cette ressemblance entre les objets n est pas un hasard En effet le but du client est d obtenir le Serviceltem du service voulu Pour ce faire le client appel la m thode 1ookup du gestionnaire ServiceDiscoveryManager et passe en param tre le ServiceTemplate qui vient d tre construit En retour la m thode envoie un tableau contenant tous les ServiceItem correspondant aux crit res de recherche ServiceTemplate AttributeSet Template FIG 6 Composition de l objet ServiceTemplate Le ServiceTemplate n est pas le seul param tre pass la m thode 1ookup On peut galement fournir cette m thode un filtre qui permet d affiner la recherche une fois les Service Item t l charg s De plus la dur e maximale de la recherche est galement fournie 15 D Mathieu Despont Service
2. Nous allons d marrer Reggie via l archive sfart jar qui se trouve dans la biblioth que des archives de base de Jini JINIHOME Users mdespont Documents Ecole teledomotique jini2 0 java Djava security manager Djava security policy contfig policy alLl Djskhome JINIHOME jar SJIINIHOME lib fstart jar config start jrmp reggie config Z 7 7 z Ce script doit tre lanc depuis le dossier de base du service hibou foodDistributor mdespont sh scripts start reggie sh 16 D Mathieu Despont Nous d marrons ici une instance de Reggie utilisant le protocole JRMP Java Remote Method Pro tocol C est le protocole standard de RMI En utilisant ce protocole la place de la nouvelle couche JERI on permet des services ayant t con us avec version ant rieur Jini 2 0 de s enregistrer dans le service de recherche Le script ci dessus fait appel d autres fichiers Notamment un fichier policy all qui autorise Reggie lire et crire partout dans le syst me de fichiers et un fichier de configuration start jrmp reggie config qui fournit des informations utiles Reggie telle que l adresse de t l chargement de son proxy En effet Reggie au m me titre que les autres services met disposition sur un serveur web son proxy Il ne faut donc pas oublier de d marrer un serveur web mettant disposition les proxies 8 1 1 Serveur web Dans le cadre de ce projet il a t choisi de s parer le
3. Cette solution pour utiliser de tels appareils dans une architecture jini est donc indispensable pour concevoir une infrastructure destin e accueil des applications de domotique Le principe d taill de cette solution est d crite dans le projet Surrogate 7 de la communaut Jini 5 4 Moyen de communication entre un client et un service Couramment dans une f d ration de services Jini le proxy communique avec son service via des appels de m thodes distance RMI Ce moyen de communication permet des applications h berg es des endroits diff rents sur des machines virtuelles Java diff rentes de communiquer entre elles comme si elles taient sur la m me machine RMI est le moyen de communication qui est le plus transparent au niveau du r seau Jini enrichi m me RMI Par d faut RMI utilise le protocole JRMP Java Remote Method Protocol construit sur TCP Par la suite afin de supporter d autres types de r seaux d autres RMI ont t d velopp s Il y a par exemple RMI sur IHOP le protocole de CORBA RMI sur HTTP RMI sur SSL et m me RMI sur FireWire Toutefois cette diversit de RMI pose un probl me Chaque type de RMI a sa propre mani re d tre programm Il faut donc concevoir l origine une application en fonction du type de RMI qu elle va employer Afin de pallier ce probl me Jini fournit JERI Jini Extensible Remote Invocation C est une couche interm diaire qui permet d cri
4. D Mathieu Despont 2 Indiquer le chemin d acc s au dossier Jini2 0 dans la variable jini home du fichier de configura tion de la compilation build properties Ceci doit tre fait pour tous les fichiers build properties Il y en a un par application cependant l installation ces fichiers sont tous identiques 3 Indiquer le chemin d acc s au dossier Jini2 0 dans la variable JINIHOME se trouvant dans tous les shell scripts 4 S assurer que la machine h te du service de recherche dispose d un nom d h te atteignable depuis les services et les clients 12 4 Compilation La compilation des applications de l infrastructure a t r alis e dans le cadre de ce projet l aide de l outils Ant Bien que l on puisse effectuer cette compilation avec d autres outils il est recommand d utiliser Ant Le manuel d installation de Ant est disponible en annexe C 13 Cr ation de nouveaux services Les services d j pr sents en exemple sont tr s proches de tous les services que l on pourrait ajouter Nous avons les services foodDistributor et lightControler qui sont des services dont le proxy utilise RMI pour contacter le service Et nous avons le service WebCam qui utilise le proxy uniquement pour transmettre au client l adresse de l image de la webcam Nous avons l de quoi r aliser d j quelques types de service diff rents Il est donc assez ais de refaire un service l aide des exemples fourni
5. la localisation physique du service sont galement d crites dans un fichier de configuration Ainsi la configuration d un service de WebCam situ dans la salle BO8 l tage B de l eivd ressemble ceci WebCam name new Name Web cam address new Address Rte de Cheseaux eivd organization null fUnit Yverdon null state 1401 Suisse location new Location B B08 null Building 6 5 Compilation La compilation du service est assez complexe Pour simplifier la t che celle ci va tre ex cut e par un script ANT Cependant avant toute chose il faut organiser les fichiers de mani re claire 13 D Mathieu Despont 2 foodDistributor build properties C foodDistributor gt foodDistributor java E lightControler build xml ej foodDistributorimpl jawa CE web CA classes e foodDistributorProxy java C config CE lib CA scripts CE sre FIG 5 Arborescence des fichiers d un service Premi rement on va cr er un dossier de base dans lequel sont plac s tous les services ainsi que le dossier Web qui contient toutes les archives JAR encapsulant les proxies des services Ensuite pour chaque service on d fini un dossier de base depuis lequel sont lanc s tous les scripts concernant le service Ce dossier contient plusieurs sous dossiers classes contenant toutes les classes du service et du client associ config contient tout les fichiers de configuration r
6. leaseMgr config La derni re tape consiste impl menter l interface du service Dans notre cas il s agit de l interface foodDIiIscribuctor Le service n tant qu une d monstration il ne pilote pas vraiment de distributeur de nourriture Il se contente d crire quelques ligne dans une console 6 4 Configuration Pour chaque service il est bon de pouvoir obtenir quelques informations sur lui Ainsi dans les at tributs sont plac s le nom du service l adresse postale de l endroit o il se trouve et sa localisation pr cise 3 me tage chambre de gauche Par exemple une personne qui utilise chez elle un service de distributeur de nourriture pour ses pois sons a indiqu dans son service que c est le service pour nourrir les poissons rouges de l aquarium du salon Si un jour il d cide de mettre le distributeur sur l aquarium des piranhas de la cuisine il est obliger de re compiler le service De m me un fabricant de distributeur de nourriture pour poissons doit compiler diff remment le service pour chaque client Il y a dans chaque service des informations ou des objets qu il est bon de pouvoir modifier au d marrage sans devoir re compiler enti rement le service Pour r soudre ce probl me on peut utiliser un fichier de configuration Un fichier de configuration la Java utilise une syntaxe tr s proche de celle du langage Java De plus des utilitaires sont fournis dans le paquetage com sun ji
7. D marrer le navigateur l aide de son script de d marrage 2 Choisir s il veut utiliser un service de recherche connu ou effectuer la recherche automatique 3 Choisir le service voulu en fonction des attributs affich s dans le cadre de droite 4 S lectionner le service d sir dans la liste Dans celle ci c est le nom du service qui est affich s il est trouv dans les attributs Le cas ch ant c est le nom de la classe qui est affich 5 Cliquer sur le bouton utiliser Le navigateur lance alors l interface utilisateur du service L interface utilisateur du service est reconstruite dans le navigateur Chaque nouvelle fen tre ainsi cr e fait partie int grante de cette application La fermeture du navigateur ferme toutes les fen tres lanc es Dans l autre sens si le fait de cliquer sur la case de fermeture de la fen tre d un service quitte l ap plication c est tout le navigateur et les autres services qui sont quitt s Il faut bien faire attention ce genre de d tails au moment de la conception de l interface utilisateur d un service 11 S curit 11 1 Motivations Jusqu pr sent nous nous sommes pr occup s que des fonctionnalit s de l infrastructure de t l domotique Maintenant nous allons nous pr occuper de la s curit de ces fonctionnalit s Pourquoi parler de s curit Et bien par ce que l architecture est con ue d une telle mani re qu elle peut tre vuln
8. EID 8tartnown J1In1i 0fg 15 Outils pour d buter avec Jini 2 0 ttp www dancres org cottage starting_jini html D 16 Projet fran ais r alis avec Jini ttp www lrde epita fr ricou D 17 Turoriel de Jan Newmarch sur l architecture Jini http jan netcomp monash edu au java jini tutorial Jini xml 18 Archives de la mailing list des utilisateurs de Jini http swjscmaill java sun com cgi bin wa A0 jini users 31 D Mathieu Despont 19 Le projet java X10 Piloter des appareils X10 avec des programmes java http x10 homelinux org 20 Bus de terrain EIB Tr s utilis par les lectriciens en Europe http www eiba com home nsf 21 Ecole d ing nieurs du Canton de Vaud http www eivd ch 22 Institut Tcom de l cole d ing nieur du canton de vaud http www tcom ch A Installation de Jini 2 0 Attention l architecture Jini est soumise la licence SCSL Cette licence est un peu particuli re c est une licence Open source mais seulement pour ceux qui acceptent la licence Cette licence est con ue pour avoir les avantages d une communaut open source qui v rifie et compl te le code fourni Et d un autre cot SUN se garde des droits dont surtout celui de perce voir un peu d argent sur les applications commerciales con ues sur la base de Jini Les applications non commerciales tant toujours libres Voici les diff rentes tapes d installation de la biblioth que
9. taire SUN Chaque service va donc poss der son propre porte cl service keystore pour garder sa cl priv e De plus chaque service aura aussi disposition dans un lieu publique un serveur web par exemple un porte cl contenant les cl publique de tous les services et clients avec qui il doit communiquer ce porte cl s appelle truststore Les certificats sont cr s avec l utilitaire keytool fourni avec java keytool genkey dname cn Food Distributor ou Tcom o eivd c CH alias foodDistributor keypass password keystore toto server keystore storepass keystorepwd validity 180 26 D Mathieu Despont Cette commande permet de g n rer pour 180 jours pour le service foodDistributor une paire de cl et de garder la cl priv e dans un porte cl nomm server keystore 11 6 Fichiers de configuration Les fichiers de configuration que nous avions pr c demment sont compl t s par de multiples instances d objets permettant d authentifier des services et d effectuer des communications s curis es Un fichier de configuration suppl mentaire est pr sent il s agit d un fichier login qui permet de d finir le type de contr le d authentification JAAS Java Authentication and Autorisation Service utiliser et dans quel porte cl aller chercher les cl s Il est possible en configurant le JAAS d afficher un bo te de dialogue qui demande le mot de passe pour acc der au porte cl ou encore d util
10. 19 D Mathieu Despont role toolkit attributes Serviceltem AttributeSets UlDescriptor AttributeSets FIG 8 Composition de l objet UTDescriptor L objet factory est une fabrique capable de reconstruire une interface graphique Cet objet est de type java rmi MarshalledOb ject En effet l objet UIDescriptor tant un attribut de type Entry 1l doit pouvoir impl menter l interface Serializable L objet role permet par un cha ne de caract re de d crire le r le de l interface utilisateur En effet on peut imaginer qu un service mette disposition une interface destin e un utilisateur standard et une autre interface destin e un administrateur du service Le r le permet de les distinguer Les sp cifications du projet ServiceUI ne d crivent que trois r les MainUI ROLE AdminUT ROLE AboutUI ROLE L objet toolkit permet d indiquer par une cha ne de caract re le type de biblioth que utilis e pour cr er l interface utilisateur Cette information permet un client qui serait limit pour une certaine interface de pouvoir choisir une ventuelle version all g e de l interface Il est ainsi possible de fournir une interface graphique construite avec Swing pour les ordinateurs et une interface AWT pour les t l phones portables encore que les t l phones portables capable d utiliser des applications AWT ne sont pas l gions Actuellement le proj
11. Jini 2 0 T l charger le Jini Starter Kit sur le site de la communaut Jini www jini orgl D compressez le fichier jini 2 O src zip md Placez le dossier jini2 O l endroit de votre choix A N Extraire l archive jsk policy jar se trouvant dans le dossier jini2 0 lib et la placer dans le dossier d extension de java j2sdk1 4 jre lib ext ou pour MacOS X System Library Java Extensions B Installation de ServiceUI Le projet ServiceUT tend normaliser la conception d interface utilisateur pour les services Jini Dans ce but une petite biblioth que a t crite Pour l utiliser nous allons simplement placer l unique archive JAR serviceui 1 1 jar dans le dossier biblioth que de Jini jini2 O lib Cette archive est disponible sur le site de ServiceUT http www artima com jini serviceu i ou sur le site de la communaut Jini dans son espace projet http serviceui jini org C Installation de Ant Ant est l outil qui est utilis dans ce projet pour compiler les applications et cr er des archives JAR Les diff rentes tapes pour l installation sont les suivantes 1 Ant peut tre t l charg l adresse suivant http ant apache org 2 Placer le dossier de Ant l endroit de votre choix 3 Ajouter le dossier bin de Ant votre variable d environnement path 32 D Mathieu Despont 4 D finir la variable d environnement ANT HOME au dossier de base de Ant temD finir
12. de la compilation d une application nombre de fichiers sont pris en compte et quelques archives JAR doivent tre cr es Il est donc tr s utile de disposer d un environnement de programmation qui permet d automatiser certaines t ches D Mathieu Despont Dans le JSK c est l outil make qui est propos plusieurs MakeFile sont disponibles pour recompiler toutes les classes de l architecture Toutefois via le projet Davis 8 de la communaut jini il existe un script ANT 9 qui lui aussi permet de recompiler toutes les classes Depuis l t 2003 est arriv sur le march le premier IDE enti rement d di la programmation et la gestion d applications Jini Il s agit de IncaX 10 Cet environnement de programmation existe en trois Versions une version community qui est gratuite mais limit e une version Entreprise qui permet en plus la gestion d une f d ration de service et une version interm diaire disponible pour une modique somme IncaX comporte plusieurs wizards qui permettent de cr er et d ex cuter un service en r pondant sim plement des questions C est remarquablement efficace Malheureusement les wizards utilisent des classes propri taires pour cr er les services Dans un soucis de compatibilit globale malgr que l on puisse galement utiliser IncaX sans les wizards donc sans les classes propri taires cet environne ment de programmation n a pas t retenu pour le pr sent
13. gymnastique est parfois un peu compliqu e mais au final l utilisateur n y voit que du feu Ce qui est le but d une infrastructure de t l domotique Jini est une architecture souple car ces concepteurs ont toujours eu le souci de g n raliser au maxi mum les concepts Ils sont parfois m me trop g n ralis s ce qui entrave quelquefois la compr hension Il est parfois n cessaire de construire plusieurs objets pour en obtenir un qui permet d en obtenir un autre Ces encha nements sont souvent des plus difficiles comprendre Seul un bon exemple permet parfois d avancer Toutefois ces exemples sont parfois difficiles trouver En effet l architecture Jini a subi de profondes modifications en passant la version 2 0 en Juin 2003 Et la plupart des exemples qu il est possible de trouver sont encore des versions ant rieures Certaines nouveaut s introduites avec la version 2 0 comme la s curit par exemple n ont pas encore eu vraiment le temps d tre prouv es par une large communaut de programmeurs Pour preuve je n ai trouv aucun exemple de code utilisant la s curit hormis l exemple fourni avec le Starter kit Seule la mailing list des utilisateurs de Jini permet de disposer d une source d information r cente Il semble tout de m me que l arriv e de la version 2 0 de Jini a donn un coup de fouet au program meurs Jini Fr quemment de nouveaux projets bas s sur Jini voient le jour La perc e ces dern
14. interface graphique dans le client du service ou dans le proxy Dans le cas o l on place l interface utilisateur dans l application cliente le service ne contr le plus le client Si le service change le client n est plus compatible il faut le changer Dans le cas o c est dans le proxy que l on place le code le service force le client a utiliser l in terface utilisateur qu il a choisi Il ne devient ainsi plus possible pour un utilisateur non humain un programme de se servir du service Interface du service FIG 7 Un humain ou un ordinateur n utilisent pas le service de la m me mani re 9 2 ServiceUl Afin de r soudre le probl me de la localisation du code de l interface utilisateur le projet Service UI propose une solution Au lieu de placer l interface utilisateur dans le client ou directement dans le proxy on la place dans les attributs du service Cette technique permet un programme d utiliser le service directement via son interface Mais elle permet galement au service de proposer au client une interface utilisateur qu il ma trise Cette technique permet de laisser ouvertes toutes les possibilit s d interface utilisateurs Les sp cifications du projet Service UI d crivent un objet UIDescriptor permettant de reconstruire une interface utilisateur Cet objet est plac dans le tableau des attributs du Service tem L objet UIDescriptor comporte plusieurs objets factory
15. projet Entre le puissant mais complexe outil make et son quivalent la syntaxe plus verbeuse ANT le choix c est port sur ANT principalement pour des raisons de simplicit d emploi 6 3 Etapes de conception L criture du code d un service se fait en trois tapes 1 Ecriture de l interface du service 2 Ecriture du proxy du service 3 criture de l impl mentation du service Premi rement on va d crire dans une interface les m thodes qui caract risent le service Ensuite on crira le code du proxy donc le code que le client va utiliser pour communiquer avec le service Et enfin on crira l impl mentation du service sa fonctionnalit EC Z monServicelnterface Serializable 7 Impl mente lt 7 S Impl mente L z Impl mente lt 6 monServicelmplementation N monServiceProxy FIG 3 Organisation des classes composant le service D Mathieu Despont 6 3 1 Ecriture de l interface du service L exemple suivant va tre bas sur un des services qui a t r alis dans le cadre de ce projet pour montrer les possibilit s de l infrastructure de t l domotique Il s agit d un service qui pilote un distributeur de nourriture pour poissons Le service comporte deux fonctions une servant d livrer aux poissons une certaine quantit de nourriture une autre permettant d interroger le distributeur pour conna tre la quantit de nourrit
16. rable des malveillances ou qu elle peut v hiculer des malveillances Il y a plusieurs probl mes Du code malicieux peut tre ex cut chez le client son insu N importe quel utilisateur le droit d utiliser n importe quel service L int grit des donn es entre un client et un service n est pas garantie L architecture Jini tant bas e sur le principe du code mobile un client est souvent amen ex cuter du code qui vient d ailleurs Dans une utilisation habituelle le client fait confiance au service et ex cute le proxy de celui ci sans se poser de questions Il suffit qu une personne malveillante place un virus la place du proxy et le client est infect Autre faiblesse un navigateur Jini d marr sur un r seau est capable de voir tous les services de recherche disponibles donc tous les services Il suffit alors pour n importe quel utilisateur de disposer d un navigateur pour utiliser n importe quel service Pourtant 1l y a peut tre des services qui sont critiques et que tout le monde ne doit pas tre capable d utiliser Dans le cas d applications de domotique personne n a envie que des inconnus s amusent avec les lampes de sa maison et d clenchent le chauffage en plein hiver et au milieu de la nuit Il est donc utile de pouvoir identifier l utilisateur d un service Depuis sa nouvelle version 2 0 Jini est capable d int grer les m canismes de s curit s SSL et Ke
17. sire employer choisi celle qui est dans sa langue Une am lioration qui vaudrait la peine d tre r alis e rapidement est la r alisation d un installeur convivial Cela permettrait n importe qui d utiliser l infrastructure 29 Mathieu Despont Dans le m me ordre d id e une application capable de g rer les services serait la bienvenue Il serait ainsi possible de se lib rer de l utilisation des shell scripts qui peuvent para tre rebutants pour un utilisateur standard Il serait int ressant d utiliser le service mercury qui est un bo te au lettres d v nements Les ser vices pourraient ainsi r agir des v nements et communiquer entre eux sans intervention humaine suivant les v nement survenus 15 Conclusions Une infrastructure de t l domotique n est pas chose des plus facile a r aliser En effet lorsque l on touche la domotique on est vite confront au probl me de la diversit norme du mat riel et aux ressources m moire et processeurs souvent tr s limit es des appareils L architecture Jini semble tre assez souple pour remplir la difficile t che de f d rer toutes sortes de service Et ceci ind pendamment des moyens de communication employ s et des machines h tes Cependant il faut parfois modifier un peu l architecture normale pour d placer les fonctions un peu trop gourmandes pour un service sur une machine h te qui dispose de plus de ressources Cette
18. son voisinage La premi re solution est identique a celle que l on utilise pour les moteurs de recherche sur le web il faut conna tre l adresse du service de recherche l avance Pour ce faire 1l existe plusieurs canaux la presse la publicit le bouche oreille etc La deuxi me solution est plus l gante Elle consiste diffuser des requ tes sur une adresse multicast correspondant au groupe des services de recherche Lorsqu un service de recherche re oit la requ te d un client il lui envoie son adresse Cette m thode permet de d couvrir tous les services de recherche disponibles port e de diffusion multicast Cette m thode est plus l gante mais elle est galement limit e par la port e de la diffusion multicast Il n y a pas seulement les clients qui ont besoin de conna tre l adresse d un service de recherche Les services ont aussi besoin de cette information pour exporter leur proxy Ils utilise pour ce faire galement les m mes techniques Le service de recherche fourni avec les paquetages de base de Jini s appelle Reggie Service de recherche EX 1 Le service exporte son Proxy 2 Le client t l charge le Proxy Service 3 Le client utilise le Proxy pour contacter le service FIG 1 Cheminement du proxy 5 3 H bergement du proxy Chaque service dispose d un proxy qui est mis disposition sur un serveur web Ce proxy est export sur le service de recherche Un client q
19. une maison permettrait de fournir avec chaque appareil une interface graphique spatieuse et conviviale choses qui ne sont pas toujours possible avec un mini cran cristaux liquide Cela permettrait d utiliser un appareil de taille raisonnable genre PDA pour afficher toutes les interfaces utilisateur de tous les appareils et de continuer la miniaturisation des appareils et services La seconde technique de recherche utilise un service de recherche connu C est typiquement la situa tion o un utilisateur d sir enclencher le chauffage dans son chalet la montagne Le chalet dispose d un service de recherche dans lequel sont enregistr s tous les services du chalet L utilisateur va donc chercher uniquement le service chauffage dans le chalet Le service de recherche du chalet est probablement hors de port e d une diffusion mulicast La seule technique applicable est donc d utiliser l adresse du service de recherche 10 3 Crit res de recherche avant ou apr s Pour utiliser un service l aide d un navigateur Jini il faut pouvoir s lectionner le bon service Il y a pour cela deux choix Rechercher tous les services correspondant aux crit res de recherche fournis Obtenir tous les services afficher leurs caract ristiques et laisser l utilisateur choisir La premi re technique est la plus performante pour r duire au maximum le nombre de donn es chang es Toutefois le nombre de crit res possibles t
20. Dans ce cas l architecture jini a pour seul r le de fournir un client une adresse 5 5 L objet Serviceltem Plus haut nous avons parl du proxy qui est le bout de code mobile utilis par le client pour commu niquer avec le service Nous avons galement soulign que les clients obtiennent le proxy voulu en interrogeant le service de recherche Toutefois comment fait le client pour choisir le proxy ad quat parmi les proxies de tous les services de la f d ration Et bien le proxy n est pas le seul objet export au service de recherche Le proxy est tout d abord encapsul dans l objet Service Item Cette objet Serviceltem contient trois objets L objet service qui contient le proxy L objet service ID qui contient l identificateur unique du service L objet attributeSets qui peut contenir toutes sortes d attributs Serviceltem AttributeSets Qo FIG 2 L objet ServiceItem contient toutes les informations utiles pour s lectionner le service Plus pr cis ment le serviceID est un nombre de 128 bits g n r selon un algorithme qui permet de garantir son unicit Ce nombre sert d identificateur pour les services Un serviceID peut tre attribu de mani re fixe un service au moment de son criture ou plut t g n r dynamiquement au moment de son enregistrement dans le service de recherche L objet attributeSets est un tableau d objets de type Entry Il peut contenir toutes sortes
21. Infrastructure de t l domotique Travail de dipl me Auteur Mathieu Despont Professeur Markus Jaton Fili re T l communication Date 18 d cembre 2003 y Mathieu Despont Table des mati res 1 Motivation 1 D Quelques exemples de services 1 3 Objectifs de ce projet 2 4 _ Service de d couverte et d utilisation de service AL UPOP 4 4 3 3 2 0 4 edenes eenn A O i 2 2 2 4 3 E 6 E 2 8 3 32 2 149 8 E 6 E 6 8 6 E e ED R 4 D a 512 E 2 E D E 2 R 6 E 6 8 8 Ve 0 3 4 H a 8 4 8 2 H E e 6 8 16 6 Ul N un Jini 5 4 Principe de DASC M M B e B 6 ae 16 3 WS 1 a a 52 Servicederecherche 0 0 0 5 3 H bergement du proxy 5 4 Moyen de communication entre un client et un service 5 35 OI SEryvicerlIt fll x xx ha de oi O El A 2 A a lt 5 e 8 X 8 2 ra 4 9 8 85 3 9 2 8 8 8 lt 4 3 lt Ne H Qi To D 5 7 AutresservicesfournisaveclarchitectureJini a aoa a a a DO IQ R R R 6 Construction d un service O1 Versioni z A M 8 emesse 6 2 Environnements de programmation 6 3 Etapes de conception 6 3 1 Ecrituredelinterfaceduservice 10 6 3 2 _ Hcrit ute QU pro srs rtra gtr nra e 6 6 Re der gt R 4 8 10 6 3 3 Ecriture de l impl mentation du servicel 11 6 4 CONMIE
22. UFAUONL s s ss sse restesse r s eee 12 65 Compain gt gt 4 9 8 8 2 6 ai 3 80 6 06 13 VO O0 7__Construction d un client 15 7 1 Etapes de conception 15 J 22 2 Z 2 RUR 2 A 8 R 8 3 2 H R A V 2 5 A CEL ue E 2 E e 16 8 Mise en service de la f d ration de services 16 8 1 D marrage du service de recherche 16 8 1 1 Serveur web 0 4 17 A e T 17 SZ Servo WED ecs a m rb d he B aR e ei 17 5227 DHEUSCHDU amp a 2a 8 2 4 2 8 5 8 3 8 araea 18 8 3 D marrage d clienti lt s lt 2 x ss Sade aa oies 18 384 D SE 2 64 4 8 X 6 3 9 D 8 0 8 4 4 8 4 D E E R E a 8 A R a a 8 4 18 18 9 1 Localisation de l interface utilisateur a 18 92 SENUR ee dd D 8 19 y 0 Navigateur Jini 10 1 Principe du navigateur 10 2 Services contextuels services connus 10 3 Crit res de recherche avant ou apr s 10 4 Utilisation du navigateur 11 S curit 11 1 Motivations 11 2 Principe de fonctionnement 11 3 Droit d acc s au syst me de fichiers 11 4 Etapes pour s curiser un proxy 11 5 Certificat X 509 11 6 Fichiers de configuration 12 4 Compilation 13 Cr ation de nouveaux services 14 Am liorations possibles 15 Conclusions A Installation de Jini 2 0 B Installation de ServiceUI C Installation de Ant C 1 Installation sur Linux C2 Installa
23. ant assez grand Et les crit res pas forc ment les m mes pour chaque service l introduction des crit res de recherche est probl matique Pour faire une inter face graphique on peut utiliser se limiter proposer un certain nombre de champs qui sont fr quemment remplis dans les services tel que les champs adresse et localisation Apr s l avoir test e cette technique c est r v l e peu efficace En effet souvent les crit res sont four nis de mani re trop pr cise et le service de recherche exclu les services qui pourraient correspondre mais donc les attributs on t remplis de mani re insuffisante 22 Mathieu Despont Le navigateur qui a t con u durant ce projet utilise donc l autre possibilit Il t l charge tout les services et laisse l utilisateur choisir en fonction des informations pr sentes dans les attributs Les informations pr sentes ne sont pas forc ment les m mes pour chaque service Cependant il est plus facile de choisir une fois tous les services pr sents eee Navigateur Jini 4 Rechercher sur Les services de recherche disponibles C Le service de recherche suivant jini fhibou tcom eivd ch D dE Rechercher Web cam ServicelD 91ba3fe2 c211 4d3b 9199 Food distributor Adresse WebCam Main Frame com sun jini reggie RegistrarPrc Rte de Cheseaux d is 1400 Yverdon Vue sur la salle B08 Suisse Sa localisation est Batiment null Etage B Salle B S U
24. b on choisi la page afficher en fournissant l adresse de cette page au navigateur Et si l on ne conna t pas l adresse on fourni des crit res un moteur de recherche Ce dernier retourne l utilisateur une liste des adresses qui correspondent 21 D Mathieu Despont Dans le cas d un navigateur Jini il est possible de fournir des crit res un service de recherche Ce dernier va retourner l utilisateur des objets ServiceItem contenant les services qui correspondent aux crit res de recherche De plus un ServiceItem peut contenir tout le code n cessaire la construction de l interface utilisateur 10 2 Services contextuels services connus Un navigateur jini effectue la recherche des services Soit dans les services de recherche visibles par diffusion multicast Soit dans un service de recherche dont l adresse est connue de l utilisateur La premi re technique permet d obtenir des services dit contextuels qui sont les services port e de diffusion multicast donc physiquement proche Il est ainsi possible un utilisateur de voir des services dont il ne conna t pas forc ment l existence mais qui de part leur proximit peuvent tre utiles Il n est pas utile d utiliser sa machine caf depuis l autre bout du monde mais il peut tre utile de le faire depuis son lit le matin pour se motiver se lever La g n ralisation de services contextuels pour piloter tout les appareils d
25. cas foodDistributorImpl Cr er un exporter du type RMI voulu L exporter est utilis pour cr er les bouts client et serveur Le bout server est export Le proxy du service est cr On lui passe en param tre le bout client Un objet LookupDiscovery est cr Il sert trouver le service de recherche Un JoinManager est cr Il se charge de Joindre le service la f d ration de services A ARR Il ne faut pas oublier d impl menter les fonctionnalit s du service Le r le de l exporter est de repr senter le moyen de communication sous jacent La configuration la plus classique est la construction d un exporter pour RMI sur TCP Pour construire un BasicJeriExporter il faut lui fournir un point d coute et une fabrique de qui construit les bouts client et serveur Dans le cas de TCP le point d coute est un port TCP exporter new BasicJeriExporter TcpServerEndpoint getIlnstance O new BasicILrFactory Le service cr e un proxy en lui fournissant le bout client qui lui permettra de contacter le service foodDistributorProxy smartProxy new foodDistributorProxy serverProxy Ensuite on cr e un LookupDiscovery Ce dernier va se charger de d couvrir un service de re cherche en effectuant des diffusions multicast On peut pr ciser un groupe ici le groupe feledomo tique En effet 1l est possible dans une m me f d ration de service de grouper des services 11 Mathieu Despont Un service de reche
26. cation entre le service et le client qui d sire utiliser le service Le but du pr sent projet comme d crit dans le cahier des charges 1 est donc de concevoir une infrastructure qui permette un client d utiliser un service quelconque sans qu il ait se soucier du moyen de communication employ Le client op re toujours d une mani re semblable pour piloter une machine caf ou une lampe L infrastructure se charge de trouver le moyen de communication ad quat Du point de vue d un fournisseur de services l infrastructure de t l domotique est tr s int ressante Le constructeur de chauffage qui veux mettre disposition un service chauffage doit seulement rendre compatible son service avec l infrastructure de t l domotique Il n a plus besoin de se soucier de la mani re avec laquelle le client va acc der son service 4 Service de d couverte et d utilisation de service Comme d crit pr c demment le r le d une infrastructure de t l domotique est d offrir un acc s via un moyen de communication quelconque des services quelconques Malgr cette grande diversit l infrastructure doit tre capable de communiquer avec tous les services Pour assurer cette communication on peut se poser quelques questions Comment repr sente t on un service Comment l infrastructure conna t elle quel moyen de communication utiliser avec quel service Une fois le moyen de communication
27. d une maison Jini est une architecture souple au niveau des types de r seaux utilis s pourtant dans bien des cas elle ne l est pas assez De plus Jini est tout de m me une architecture assez lourde pour des machines qui sont limit es en ressources Pour tenter de contourner certains probl mes il est utile de disposer d un plus large ventail de possi bilit s permettant d acc der la f d ration de service Parmi ces possibilit s il y a La Servlericlient Jini C est un client Jini capable d afficher une interface utilisateur web Une application RMI relais pour une machine n ayant pas assez de ressources pour utiliser l archi tecture Jini mais qui en a suffisamment pour utiliser RMI F d ration Jini de la maison Client Jini sur t l phone portable Jini S D Servlet HTTP Navigateur Z a b X Client Jini we Application Relais RMI RMI RMI sur Client Jini T l phone portable FIG 12 De multiples passerelles permettent l acc s la f d ration jini Une autre am lioration possible est la gestion des langues Ceci peut tre ais ment r alis en pla ant le n cessaire la gestion des langues dans les attributs d un service Chaque service est con u avec une interface utilisateur par langue Celle ci sont disponibles dans l objet UTDescriptor qui est un attribut Le navigateur au moment de choisir l interface utilisateur qu il d
28. d at tributs permettant de d crire le service 5 6 Entry Les attributs contenus dans le tableau attributeSets sont de type Entry Ce type est en faite une interface N importe quel objet peut tre utilis comme attribut du service et tre plac dans le tableau attributeSets pour autant qu il impl mente l interface Entry D Mathieu Despont Il existe tout de m me une restriction le type Entry a t cr pour signaler non seulement la fonction de l objet mais aussi que cet objet doit tre s rialisable Donc il n est pas possible de d finir comme Entry un type primitif float int etc Le paquetage net jini lookup entry d finit un certain nombre d objets de type Entry qui peuvent tre utilis s pour indiquer la localisation physique d un service Entre autres les objets Address Location Name et Comment sont les plus utiles dans le cadre de la conception d une application de domotique Il est ainsi possible pour un client de s lectionner dans un service de recherche tous les services se trouvant dans une telle chambre de la maison situ e une certaine adresse postale 5 7 Autres services fournis avec l architecture Jini L architecture Jini est complexe Pour l obtenir il faut t l charger le Starter Kit JSK sur le site officiel des la communaut Jini 4 Le JSK contient la documentation un exemple ainsi qu une foule d archives JAR contenant toutes les classes n cessaires la concepti
29. e de cl priv e cl publique Chacune des parties doit donc disposer de sa cl priv e et de le cl public de l autre La gestion des cl s est faite via des certificats X 500 11 3 Droit d acc s au syst me de fichiers Un autre niveau de s curit est celui des droits d acc s de l application dans le syst me de fichiers Il est possible pour toute application Java d indiquer exactement quelle m thode le droit d acc der quelle partie du syst me de fichier Habituellement cette op ration est effectu e via un fichier policy Cependant avec ce m canisme l application doit lire le fichier de configuration avant d tre d marr e Ce qui nous emp che d utiliser ce m canisme pour attribuer des droits un proxy qui est un morceau d application arrivant en cours d ex cution Un nouveau m canisme donc t utilis Pour utiliser ce m canisme d attribution dynamique des droits d acc s une application doit sp cifier avant son d marrage l utilisation d un autre fournisseur de droit d acc s On utilise policy provider net jini security policy DynamicPolicyProvider Ce fournisseur de droits d acc s se trouve dans l archive jsk policy jar qui doit tre install dans le dossier d extension de Java voir installation de Jini dans l annexe A 25 D Mathieu Despont 11 4 Etapes pour s curiser un proxy 299 Les diff rentes tapes n cessaires un client pour utiliser un pro
30. e fait avec le m canisme d interface intrins que au langage Une interface est la description des m thodes d une classe sans son impl mentation La communication entre les diff rents services se fait par RMI qui est le m canisme de RPC propre Java RMI l avantage d tre un protocole tr s l ger par rapport d autres protocoles du type de SOAP qui sont utilis s par un SDUS tel que UPnP En effet si le protocole utilis ne semble pas tre de la plus grande importance dans une utilisation sur un r seau haut d bit dans le cas d un refuge de montagne ne disposant comme r seau d acc s que de GPRS l avantage d un protocole l ger se remarque tant du cot des temps d attente que du cot du porte monnaie Les sp cifications sont ind pendantes du langage mais la seule impl mentation disponible est en Java D Mathieu Despont La coh rence des m canismes utilis s par Jini permet de faire voyager des objets entre diff rents clients ou services sur diff rentes machines virtuelles java JVM Cette technique est un avantage pour cr er une v ritable application r partie faisant vraiment abstraction du r seau Un autre avantage de Java est son aspect multi plateforme qui permet de s affranchir du mat riel sur lequel vont fonctionner les services Mat riel qui dans le cas de la domotique peut tre tr s h t roclite La nouvelle version Jini 2 0 supporte galement SSL et Kerberos ce qui fait de Jini un SDUS
31. e les services se font via les protocoles SOAP Simple Object Access Protocol Gena Generic Event Notification Architecture et SSDP Simple Service Discovery Protocol qui tous trois utilisent HTTP pour v hiculer leurs messages 4 2 Salutation Salutation se veut tre un SDUS compl tement ind pendant de l influence de toute entreprise Cette architecture se veut ind pendante de tout processeur OS langage et syst me de communication C est une architecture compl tement libre et gratuite Ce SDUS fournit un certain formalisme pour d crire des services Son principe de fonctionnement est bas sur la recherche du service demand et sur le t l chargement de son driver afin que le client puisse l utiliser Salutation tend rendre l installation de drivers totalement transparente Salutation vise particuli re ment le monde des imprimantes et des FAX 4 3 Jini JINI est la solution propos e par SUN au probl me du Plug and Play r seau pour les services Une architecture JINI est utilis e par des clients pour d couvrir et utiliser des services disponibles sur un r seau informatique Une architecture JINI est donc le G nie du r seau informatique capable d orienter les utilisateurs sur les diff rents services disponibles JINI la particularit de reposer sur le langage java En effet le langage Java pr sente d j in trins quement des m canismes qui satisfont les besoins d un SDUS La description d un service avec JINI s
32. elatifs au service Tib contient les classes du service group es dans une archive JAR Scripts contient les scripts pour d marrer le service Src contient les fichiers source du service Dans ce m me dossier de base du service on trouve deux fichiers build xml et build properties Ce sont respectivement le fichier Ant de compilation et son fichier de configuration Plusieurs t ches Ant sont utilis es pour effectuer la construction du service Il y a les t ches Service compile permettant de compiler toutes les classes concernant le service client compile permettant de compiler toutes les classes concernant le client jar qui compile toutes les classes et les groupe dans les archives JAR ad quates Il y a plusieurs archives JAR qui sont cr es Il y a foodDistributor service jar et foodDistributor client jar qui contiennent toutes les classes du service ou du client Il y a galement foodDistributor service dl jar qui contient le proxy et l interface du service mais pas l impl mentation Cette archive est plac e dans le dossier Web qui est accessible sur un serveur web Le fichier de configuration build properties contient quelques informations utiles pour la compila ton Il y a entre autres les noms des dossiers o seront pris ou plac s les fichiers utilis s ou cr er par Ant De plus c est galement dans ce fichier que l on indique le chemin d acc s la biblioth que des arc
33. emblable celui utilis pour d marrer Reggie Toutefois en plus il sp cifie le chemin d acc s aux archives jini core jar et jini ext jar qui sont dans la biblioth que de base de jini Ces archives sont n cessaires toute application Jini Le fichier de configuration qui est pass en param tre au service est jeri server config C est dans ce fichier que sont plac es les informations relatives au service notamment sa localisation 8 3 D marrage du client Le client est d marr l aide du script start foodDistributorClient sh Nous avons ici un script tr s semblable celui utilis pour d marrer le serveur la diff rence que le client n a pas de proxy donc il n y a pas besoin de sp cifier son adresse 8 4 En r sum En r sum pour d marrer une f d ration de service minimale il faut d marrer 1 le serveur web h bergeant le proxy du service de recherche a le serveur web h bergeant le proxy du service UI le service de recherche reggie a le service 5 le client Ces op rations sont effectu e depuis le dossier de base du service en ex cutant les scripts suivants l mdespont sh scripts httpd jini sh 2 mdespont sh scripts httpd service sh 3 mdespont sh scripts start reggie sh 4 mdespontS sh scripts start foodDistributor sh 5 mdespont sh scripts start foodDistributorClient sh Il est pr f rable de d marrer le service et le client dans des terminaux diff rents a
34. et ServiceUT ne d fini que des toolkits pour cr er une interface utilisateurs graphique Cependant on peut imaginer d finir un toolkit pour construire une interface utilisateur par synth se et reconnaissance vocale ou une interface graphique 3D immersive Un utilisateur d applications domotiques pourrait ainsi avoir devant lui ou dans ses mains l appareil qu il manipule distance L objet attributs est un conteneur d attributs pour l interface utilisateur Il est possible d attri buer toutes sortes d objets l interface utilisateur pour autant qu il puisse impl menter l interface Serializable 20 D Mathieu Despont Dans le cadre de ce projet plusieurs services de test on t r alis s un service de distribution de nourriture pour les poissons un service servant allumer ou teindre des lampes et un service de webCam Chacun de ses services t dot d une interface graphique conforme aux sp cifications du projet Service UI Chaque service propose dans ses attributs une fen tre de r le MainUI ROLE Cette fen tre propose l utilisateur tous les boutons champs textes et autres composants utiles au pilotage du service 66068 Food distributor Main Frame Quantit restante dans le distributeur 1988 Quantit donner aux poissons 12 Donner FIG 9 Interface utilisateur du distributeur de nourriture Par cette m thode le service peut proposer une interface graphique qu il ma trise et qui e
35. fin de pouvoir observer les messages qui s affichent pendant l ex cution des applications 9 Interface utilisateur graphique d un service 9 1 Localisation de l interface utilisateur Jusqu pr sent nous avons mis en place l acc s un service Une application cliente est capable d utiliser les m thodes d un service Cependant les appels de m thode distance restent au niveau du programmeur Pour qu un utilisateur standard puisse utiliser le service il faut lui faire une interface utilisateur 18 D Mathieu Despont Lorsque l on parle interface homme machine le plus souvent c est l interface graphique que l on pense au GUI Graphical User Interface Malgr qu il existe d autres moyens pour tablir une communication entre un homme et une machine c est tout de m me le moyen le plus courant et le plus efficace que l on connaisse Habituellement une application est toujours tr s li e avec son interface utilisateur Il n est souvent pas possible de les dissocier Lorsque l on dispose d un mod le de programmation orient service il est plus facile de s parer l interface utilisateur du service en lui m me Il est donc possible avec un tel mod le d avoir plusieurs interfaces utilisateurs qui pilotent le m me service Cependant dans un tel mod le o placer le code de l interface utilisateur Dans l utilisation d un service Jini il est possible de mettre le code de l
36. hives JAR de Jini En effet il ne faut pas oublier d installer la biblioth que pour que le service puisse aller chercher les classes dont il a besoin Pour effectuer une compilation compl te et construire les archives JAR Il faut ex cuter dans un terminal depuis le dossier du service la commande suivante hibou foodDistributor mdespont ant Jar Cette commande ex cute avec Ant la t che jar Petite pr cision le fichier build xml fourni contient des t ches qui font la compilation d un service disposant d une interface utilisateur graphique Cette notion sera trait e plus tard section 9 2 Si l on veut compiler un service simple sans interface graphique il faut donc modifier le fichier build xml pour lui enlever tous ce qui concerne celle ci 14 D Mathieu Despont 7 Construction d un client Ci dessus nous avons bri vement parl d applications clientes du service La section pr sente va d crire les principes de base pour la cr ation d une telle application cliente capable d utiliser un service 7 1 Etapes de conception Un client est beaucoup plus simple concevoir qu un service Un client passe par trois tapes pour utiliser un service 1 Trouver un service de recherche 2 D finir des crit res de recherche 3 Obtenir du service de recherche les services correspondant aux crit res Pour trouver un service de recherche le client utilise un gestionnaire le ServiceDiscoveryManager
37. iers temps des acc s internet haut d bit et des r seaux domestique sans fil n a cess de s accro tre Cette combinaison de r seau permet un particulier d installer pour un prix sa port e un r seau dans toute une maison d un seul coup Cela offre de grandes perspectives la t l domotique Mathieu Despont 30 D Mathieu Despont R f rences 1 JATON M 2 Universal Plug and Play Forum CCP Www upnp org 3 Site officiel de Salutation ttp www salutation org D D 4 Site officiel de la communaut Jini ttp www jini org 5 DESPONT M Infrastructure de t l domotique Projet de semestre Institut TCOM projet de semestre 2003 6 DESPONT M Jini Institut TCOM mini pr sentation 2003 D 7 Site du projet Surrogate ttp surrogate jini org D 8 Site web du projet Davis ttp davis jini orqg gt 5 9 ANT Un outils de compilation ttp ant apache org D 10 ZDE pour d velopper et manager des services Jini ttp www incax com 11 Homepage d Alexander Shvets Plusieurs exemples d applications Jini compil es avec Ant ttp home earthlink net shvets D 12 Sp cifications du projet ServiceUI qui tend normaliser les GUI d applications Jini ttp www artima com jini serviceui D 13 Jini Corner at Artima Documentation Jini notamment sur ServiceUI et sur la s curit ttp www artima com jini D 14 Outils pour d buter avec Jini 2 0
38. iser directement des mots de passe se trouvant dans des fichiers 12 Installation de l infrastructure de t l domotique 12 1 Plate forme support es A priori toutes les plate formes disposant d un machine virtuelle Java JDK 1 4 sont capables d ex cuter un service ou un navigateur Jini Cependant face la complexit des commandes crire pour d marrer une application des shell scripts ont t crits Ceux ci ne s ex cutent que sur des machines de type Unix Il n est toutefois pas compliqu de modifier ces scripts pour en faire des bat s ex cutant sur un syst me Windows Les syst mes qui ont t test s sont Mac OS X et Linux Mandrake 12 2 Biblioth ques requises Les diff rentes applications composant l infrastructure ont t r alis es l aide de plusieurs biblioth ques la biblioth que de base de java la biblioth que de Jini 2 0 la biblioth que de ServiceUT pour les services avec interface utilisateur Il est donc n cessaire d avoir install ces biblioth ques avant de vouloir utiliser les applications d velopp es dans ce projet Les manuels d installation de Jini 2 0 et ServiceUI sont disponibles dans les annexes A et B 12 3 Installation Nous allons proc der l installation des services livr s en exemples du navigateur et de tous les scripts associ s 1 Copier le dossier de base de tout les services ici appel festjini l endroit voulu 2i
39. la variable d environnement JAVA HOME au dossier de base de Java Voici un exemple des lignes de code possible pour effectuer ces t ches C 1 Installation sur Linux Avec un interpr teur bash commun sous Linux export ANT_HOME usr local ant export JAVA HOME usr local jdk 1 4 0 export PATH S PATH S ANT HOME bin C 2 Installation sur MacOS X Avec un interpr teur csh commun sous MacOS X Darwin setenv ANT HOME usr local ant setenv JAVA HOME System Library Frameworks JavaVM framework Home set path path SANT HOME bin 33
40. ltem serviceltem serviceDiscovery lookup serviceTemplate null ServiceltemFilter Long MAX VALUE Search duration Dans le cas ci dessous la recherche va se faire uniquement sur le nom de l interface du service Un objet nu11 n est pas pris en compte pour la recherche il s agit du joker new ServiceTemplate null new Class foodDistributor class null Ainsi un client d sirant obtenir tous les services disponibles dans la f d ration effectuera une re cherche l aide d un ServiceTemplate dont tous les champs sont nul1 7 2 Compilation La compilation d un client s effectue de la m me mani re que celle du service La seule diff rence r side dans le fait que le client n a pas besoin de mettre une partie de son code disposition sur un serveur web 8 Mise en service de la f d ration de services Une f d ration de service est compos e de services de clients et d un service de recherche Dans cette section nous allons d crire comment mettre en place tout ceci 8 1 D marrage du service de recherche Le service de recherche est le service le plus important d une f d ration Nous allons utiliser 1c1 le service de recherche fourni avec le Starter kit Il s appelle Reggie Le nombre de param tres indiquer pour d marrer Reggie tant assez important toutes les instructions ont t plac es dans un shell script nomm sfart reggie sh et plac dans le dossier des scripts du service
41. ne installation de t l domotique peut galement tre un pr cieux outil de travail pour le gardiennage d un refuge de montagne Il devient ainsi plus ais de v rifier depuis la vall e l tat des r serves du refuge de communiquer avec les ventuels occupants et d obtenir des informations m t orologiques sur l environnement du refuge On peut encore imaginer une foule d exemples dans lesquels peut intervenir une infrastructure de t l domotique D Mathieu Despont 3 Objectifs de ce projet Il existe donc dans une maison une foule d appareils ou de fonctions qu il serait int ressant de pou voir commander distance Par la suite tous ces appareils ou fonctions seront d sign s sous le terme de service Un service est une entit avec laquelle ont peut interagir Un service peut poss der des tats et il pro pose une ou plusieurs fonctions Dans un contexte purement domotique ces fonctions sont celles de l appareil que le service repr sente Par exemple une machine caf poss de la fonction Chauffer l eau et la fonction Verser le caf De plus il est possible de se renseigner sur l tat de la r serve d eau Quant lui le service lampe dispose des fonctions Allumer teindre et d une fonction nous indiquant l tat de la lampe En observant ces deux exemples on remarque qu un service peut se pr senter sous de multiples formes De plus il existe une multitude de moyens de communi
42. ni config 12 D Mathieu Despont Un de ces utilitaires getHostName permet d obtenir le nom de l h te sur lequel est d marr e l application Une application peut ainsi au moment de son ex cution aller chercher un objet particulier dans un fichier de configuration Un programmeur utilisera la m thode suivant pour obtenir un objet d un fichier de configuration Object Confiquration getEntry String component String name Class type Pour utiliser un fichier de configuration g n ralement on passe le nom du fichier de configuration en argument la m thode main de l application L utilisation d un fichier de configuration est tr s utile pour choisir un exporter Ainsi peu importe le type de RMI utilis finalement l application est crite de la m me mani re Seul le fichier de configuration change Il est ainsi possible de choisir le type de RMI utiliser juste en choisissant parmi un des exporter suivant JeriExporterDemo exporter new BascJeriExporter TcpServerEndpoint getInstance O0 new Basicllfactory JrmpExporterDdemof exporter new JrmpExporter TiopExporterDdemo exporter new ITiopExporter Dans cette m me optique le gestionnaire charg de d couvrir le service de recherche est aussi cr er partir d un fichier de configuration Cela permet de changer facilement le type de gestionnaire ainsi que le groupe auquel il est affili Bien entendu les informations sp cifiques
43. on d applications bas es sur Jini En plus de ceci le JSK contient quelques services qui peuvent tre utiles la mise en place d une f d ration de service Il y a entre autres Un serveur web minimal destin d livrer les proxies dans des archives JAR Reggie un service de recherche Mahalo un manager de transaction entre les services Norm un gestionnaire de bail pour les proxies Mercury une bo te aux lettres d v nements Outrigger un gestionnaire JavaSpaces TM un syst me de r pertoires r partis pour stocker des objets Ce syst me permet de partager des donn es entre plusieurs applications 6 Construction d un service 6 1 Version Lorsque l on d sire d velopper des applications avec Jini la premi re chose faire est de t l charger sur le site de la communaut Jini 4 le JSK Jini Starter Kit Actuellement depuis juin 2003 c est la version 2 0 qui est disponible Cette version apporte nombre de nouveaut s et de changements par rapport aux versions pr c dentes Les applications d crites dans ce document ont toutes t crites avec la version 2 0 de Jini 6 2 Environnements de programmation En d veloppant des applications avec une architecture telle que Jini on est tr s vite perdu dans la masse de fichiers sources fichiers de configuration archives JAR et scripts en tous genres Il est donc important de bien organiser la gestion de tous ces fichiers Au moment
44. rbe ros 24 D Mathieu Despont 11 2 Principe de fonctionnement Le principe fondamental du fonctionnement des m canismes de s curit est bas sur l application de contraintes sur un proxy Une contrainte peut tre appliqu par un client ou par le service Dans les contraintes souvent utilis es ilya Integrity ServerAuthentication ClientAuthentication Lorsque l on parle d appliquer une contrainte en fait on cr e partir du proxy original une copie qui est pass e par plusieurs tests La contrainte Integrity oblige le client qui re oit un proxy v rifier l int grit des donn es qu il re oit Le t l chargement du proxy s effectue par un type de HTTP particulier Le protocole httpmd Ce protocole utilise HTTP et lui ajoute une v rification de l int grit des donn es transmises gr ce un digest MDS5 Une URL httpmd ressemble donc ceci http monserveur moncode jar md5 1243673287487458745398453 Le client qui re oit une archive par httpmd cr e de son cot un digest MDS et le compare celui contenu dans l URL Si les digest son gaux L archive a t t l charg e sans tre modifi e Les contraintes ServerAuthentication et clientAuthentication obligent soit le ser vice soit le client ou les deux tre authentifi s Couramment on utilise SSL ou Kerberos pour faire des authentifications Cela signifie que l authen tification va se faire par un m canism
45. rche peut ainsi tre exclusivement r serv au stockage des services appartenant un certain groupe DiscoveryManagement discoveryManager new LookupDiscovery new String 1 teledomotique config L tape suivante consiste cr er un JoinManager Ce gestionnaire va s occuper de cr er le serviceltem d y encapsuler le service ainsi que ses attributs et enfin il va signaler au service de recherche qu un nouveau proxy est disponible sur un serveur web une certaine adresse Le JoinManager est donc le gestionnaire qui permet un service de joindre la f d ration de ser vices Il est responsable de toutes les communications avec le service de recherche Dans le code ci dessous on inclus dans les attributs le nom du service ainsi qui son adresse postale et sa localisation plus pr cise Parmi tout les gestionnaires que l on indique au gestionnaire JoinManager on a omis de pr ciser un leaseManager on utilise ainsi la dur e de bail par d faut du service de recherche Reggie qui est de 5 minutes Toutes les cinq minutes le service de recherche va donc re t l charger le proxy du service Ce m canisme de bail permet de maintenir le service de recherche jour Il est ainsi cinq minutes pr s toujours au courant de la derni re modification du service ou de sa derni re localisation JoinManager JoinManager new JoinManager smartProxy new Entry name address location getServiceID discoveryManager null
46. re une application RMI sans se pr occuper du protocole sous jacent Celui ci peut tre choisi l ex cution Le type de protocole que l application utilise est d crit dans un fichier de configuration Java L application lit le fichier chaque d marrage et construit les bons objets de communication Cette technique permet de changer de type de RMI sans avoir recompiler l application JERI s occupe galement de compiler un bout serveur et un bout client la vol e L utilisation du compilateur rmic n est donc plus requise Cependant dans certains cas RMI n est pas utilisable En effet certaines applications ne sont pas capables d utiliser RMI comme moyen de communication ou encore le r seau sous jacent reliant l application et le client ne supporte pas RMI et enfin l utilisation de RMI n est peut tre pas voulue par les concepteurs du service D Mathieu Despont Dans tous ces cas il suffit d inclure dans le proxy le code n cessaire l utilisation par le client du moyen de communication voulu permettant de contacter le service Par exemple un service de web cam propose des images Transmettre des images par RMI n est pas chose des plus ais e et des plus ad quate Il est donc nettement plus simple d inclure dans le proxy du service de web cam l adresse permettant de r cup rer l image par le protocole HTTP Car c est comme le nom de Web cam l indique le protocole le plus appropri cette t che
47. s Devez vous donc renoncer vos vacances Non Gr ce une installation de t l domotique vous pourrez nourrir votre poisson rouge depuis votre lieu de vacances Vous pourrez galement surveiller votre maison au travers de cam ras et loigner les cambrioleurs en faisant croire une pr sence en allumant et teignant les lampes 2 Quelques exemples de services L exemple ci dessus d montre l utilit d une installation de t l domotique dans votre propre maison On peut galement imaginer qu une telle installation soit disponible dans votre chalet perdu dans la montagne Dans ce cas ci la place de donner manger votre poisson rouge vous pr f rez certainement allumer le chauffage quelques heures avant votre arriv e afin de b n ficier d une temp rature agr able lorsque vous entrerez dans votre chalet Une fois confortablement assis dans votre fauteuil au coin du feu dans votre chalet vous apercevez dans le programme TV que votre mission pr f r e passe le soir m me la t l vision Comble de malchance vous avez toujours refus d installer la t l vision dans votre chalet Ce soir vous regrettez votre choix Mais tout va s arranger gr ce votre installation de t l domotique vous allez pouvoir programmer depuis votre chalet l enregistrement de votre mission de TV favorite sur le magn toscope de votre maison Vous pourrez ainsi regarder l mission une fois de retour chez vous U
48. s Les tapes sont les suivantes 1 D finir l interface que l on d sire 2 Reprendre le code source d un service existant remplacez l impl mentation du service existant par celle du nouveau service 3 Remplacer dans tout les fichiers relatif au service sources shell scripts fichiers Ant et fichiers de configuration le nom de l ancienne interface par le nom de la nouvelle Par exemple remplacer foodDistributor par coffee Machine 4 Modifier dans les fichiers de configuration les informations relatives au service comme son nom ou sa localisation physique 5 Remplacer dans les bons fichiers le code construisant l ancienne interface utilisateur par le code d une interface graphique qui soit capable d utiliser le service 6 Compiler le service 7 Voil il ne reste plus qu le d marrer et l utiliser Un service comme celui l est vite fait mais 1l ne fait rien En effet le code du service en lui m me reste crire Ce qui est fourni ici c est juste un moyen d acc s Pour piloter une machine caf il reste encore du chemin Mais il ne faut pas se d moraliser c est possible 28 D Mathieu Despont 14 Am liorations possibles Une telle infrastructure et tout logiciel de mani re g n rale n est jamais fini Il y a toujours des am liorations possibles La premi re de ces am liorations sera d augmenter le nombre de possibilit s d acc s la f d ration de service
49. s proxies de services de celui du service de recherche Le Starter kit est livr avec une archive contenant des utilitaires Parmi ceux ci se trouve un mini serveur web pouvant servir mettre des JAR disposition Le script suivant permet de d marrer un serveur web sur la biblioth que d archives de base de Jini Ce serveur est accessible sur le port 8081 JINIHOME Users mdespont Documents Ecole teledomotique jini2 0 java jar SUINIHOME lib tools jar port 8081 dir SUINIHOME lib amp Pour fonctionner correctement Reggie doit tre d marr sur une machine disposant d un nom d h te qui soit accessible depuis le reste du r seau 8 2 D marrage du service 8 2 1 Serveur web Avant de d marrer un service 1l faut galement d marrer un serveur web pour mettre disposition son proxy Comme pour le service de recherche nous utilisons le serveur web mis disposition dans le JSK Cette fois le dossier accessible via le serveur web est le dossier Web plac au m me endroit que tous les dossiers de base des services Ce serveur web est accessible sur le port 8082 JINIHOME Users mdespont Documents Ecole teledomotique jini2 0 java jar SUINIHOME lib tools jar port 8082 dir Users mdespont Documents Ecole teledomotique testjini web amp 17 D Mathieu Despont 8 2 2 Shell script Pour d marrer le service foodDistributor nous allons ex cuter le script sfart foodDistributor sh Ce script est s
50. st cens se trouver le pilote soit il va directement t l charger le pilote sur le site web du constructeur de l imprimante La seconde solution est la plus proche de ce qui se passe dans une architecture Jini En effet les proxies sont galement t l charg s depuis un serveur web Pour t l charger le pilote d une imprimante logiquement il suffit de se diriger sur le site web du constructeur En revanche o faut il t l charger le proxy d un service Jini C est l qu intervient le v ritable g nie de l architecture le service de recherche 5 2 Service de recherche Le service de recherche est l architecture Jini ce que Google est au web Google ou n importe quel autre moteur de recherche permet un utilisateur web de trouver le site qu il d sire Le service de recherche Jimi est l entit qui permet un client Jini de trouver et Mathieu Despont t l charger le proxy d un service Un service de recherche stocke tous les proxies d une f d ration de service Le service de recherche est donc le moteur de recherche de la f d ration de service Il est utilis pour trouver tous les services Mais comment fait un client pour trouver le service de recherche C est une question pertinente comment trouver le service qui permet de trouver les services Il existe deux solutions Soit le client conna t l adresse du service de recherche Soit le client effectue une recherche dans tout
51. st de part ce fait la plus conforme avec l utilisation que l on peut faire du service De plus si un jour le le service est mis jour l interface peut galement tre mise jour sans que le client n ait tre modifi 10 Navigateur Jini 10 1 Principe du navigateur Jusqu pr sent nous avons toujours parl du service et du client qui est capable de l utiliser Dans un service des plus simple le client doit g n ralement conna tre l avance les m thodes qu il peut appeler sur le service Le service et le client sont donc tr s li es Avec l utilisation d une interface graphique conforme aux sp cifications du projet ServiceUI on passe l tape suivante Un service priori inconnu est capable de fournir un utilisateur humain son service et de quoi l utiliser Et ceci tout en garantissant que les programmes n utilisant pas l interface graphique puissent toujours fonctionner sans modification Malgr le fait qu un service priori inconnu puisse tre utilis il subsiste toujours un probl me l application cliente reste toujours li e au service qu elle utilise L tape suivante consiste donc permettre un client d utiliser n importe quel service Un telle application est ce que l on appelle un navigateur Un navigateur web permet d afficher n importe quelle page HTML Un navigateur Jini permet d affi cher n importe quelle interface utilisateur d un service Dans le cas d un navigateur we
52. tiliser k Food distributor Main Frame Quantit restante dans le distributeur 1988 Quantit donner aux poissons 12 FIG 10 Le navigateur ainsi que la fen tre de la WebCam et du distributeur de nourriture Il reste une limitation au navigateur il n est pas capable d afficher les champs dont il ne conna t pas le type Ceci est un choix de programmation et non une v ritable limitation T l charger tous les services est possible seulement si le nombre de service n est pas trop important Avec le nombre restreint d applications de domotique que l on trouve dans les maisons actuellement cette technique fonctionne parfaitement Cependant ce ne sera pas forc ment le cas partout et pour toujours Un autre argument en faveur de cette technique est le fait qu un utilisateur qui d cide d utiliser un service particulier profitera certainement de l occasion pour en utiliser d autres Il n est donc pas totalement inutile de t l charger dans le navigateur tous les services 10 4 Utilisation du navigateur Le navigateur con u dans ce projet est plac dans la m me structure de dossier que les services Il est compil et d marr selon le m me principe que les services et clients Il dispose de son propre script Ant et de son propre shell script 23 D Mathieu Despont L utilisation du navigateur est tr s simple L utilisateur qui d sire employer un service effectue les op rations suivantes 1
53. tion sur MacOS X Mathieu Despont 21 21 doi ce 22 die w 22 2 6 e 23 24 1 G A 38 8 s6 4 E 3a 0 CAU 19 E 78 3 E e 082 36 1a 8 EEEE EET 78 24 Ci e e e 25 io ot 25 die w 26 SRY 2 AR S 2 8 476 8 RE 8 ar 4 u 4 3 A e E 8 r 8 3 216 e 26 N 2 8 6 6 f 8 S E 27 27 ee 27 de 27 e RARA ARRASAR 8 8 27 ee 8 28 28 29 30 32 32 32 LA R 6A 0 d e 3 2 a WA 8 a 8 8 A D a e 33 D Mathieu Despont 1 Motivation Le terme t l domotique d signe une domotique distance Donc le fait de pouvoir piloter distance une maison intelligente Depuis toujours le fait de pouvoir commander distance les appareils dans sa maison fait r ver les gens On trouve une foule d exemples de t l domotique dans les ouvrages de science fiction Mais avec l volution actuelle de la technologie la t l domotique sort du domaine de la science fiction et devient r alisable La t l domotique est particuli rement int ressante pour surveiller une maison Imaginez que vous partez en vacances vous avez pens tout sauf un petit d tail Qui va donner manger votre poisson rouge durant votre absence En effet par une incroyable malchance la voisine qui s acquittait habituellement de cette t che est galement absente Songeant l absence simultan e de votre voisine et de vous m me vous vous dites galement que le voisinage va tre bien vide Une aubaine pour les cambrioleur
54. tr s s re Pour toutes ces raisons Jini parait tre le SDUS qui est le mieux dispos la construction d une infrastructure de t l domotique 5 Jini 5 1 Principe de base L architecture Jini est bas e sur ce que l on appelle une f d ration de services Dans une f d ration de services 1l y a des services des clients un service de recherche Toute l architecture Jini repose sur le principe du code mobile A la question Comment un client fait il pour utiliser un service qu il ne conna t pas On peut r pondre par une autre question Comment fait un ordinateur pour utiliser une carte qu il ne conna t pas Et bien pour qu un ordinateur puisse utiliser une carte inconnue on lui fourni le driver ad quat Chaque carte graphique a son driver et chaque imprimante est fournie avec son pilote d impression Dans l architecture Jini c est pareil Chaque service poss de un driver et chaque client qui d sire utiliser un service contacte ce dernier via son driver Dans la terminologie Jini un driver s appelle un proxy S1 l on reprend l exemple de l installation d une imprimante inconnue En g n ral l installation du pi lote doit tre faite par l utilisateur Ce dernier doit pour commencer poss der le pilote Ici en g n ral deux choix se pr sentent l utilisateur soit 1l entreprend une fouille arch ologique dans le carton de l imprimante pour retrouver le CD sur lequel e
55. trouv comment conna tre l adresse du service La solution se trouve dans la d finition d une interface commune pr sente entre chaque service et l infrastructure Cette interface Joue le r le du morceau de colle entre le service et l infrastructure Le probl me n tant pas totalement nouveau il existe ce que l on appelle des SDUS des Services de D couverte et d Utilisation de Services Un SDUS fournit les moyens pour d crire un service ainsi que pour annoncer sa pr sence et sa localisation Diff rents SDUS sont disponibles sur le march entre autre UPnP Salutation et Jini D Mathieu Despont 4 1 UPnP UPnP Universal Plug and Play 2 est un SDUS d fini par une multitude d entreprises r unies sur le forum UPnP Ces entreprises sont fortement influenc es par Microsoft semble t il Une architecture UPnP est compos e de plusieurs dispositifs qui sont des conteneurs logiciels de services Un dispositif repr sente un appareil ou plusieurs s il est le dispositif racine Par exemple un magn toscope peut tre compos d un service de tuner et d un service d horloge Un dispositif d tient une adresse IP et peut tre pilot par un point de contr le via une liste d actions pour modifier ses variables d tat Dans une architecture UPnP les services ainsi que leurs caract ristiques sont d crits au format XML eXtensible Markup Language dans une liste que d tient le dispositif Les communications entr
56. ui d sire utiliser un service va interroger le service de recherche pour t l charger le proxy voulu Ce dernier tant originaire du service il conna t le moyen de commu D Mathieu Despont nication et l adresse employer pour communiquer avec le service Ce proxy est donc un morceau de code mobile provenant du service et qui va tre ex cut dans l application cliente Il revient donc au concepteur du service de cr er et de mettre disposition du service de recherche un proxy Les proxies sont mis disposition sur un serveur web G n ralement on d die un serveur web sur un port particulier du serveur Cependant on peut tr s bien utiliser n importe quel serveur web pour h berger les proxies On peut m me utiliser un serveur web qui n est pas du tout sur la m me machine ou la m me adresse que le service Dans ce cas la seule contrainte est de disposer d un programme qui se charge la place du service de signaler au service de recherche la pr sence et la localisation d un nouveau proxy Cette mani re de s parer enti rement les diverses fonctions d un service est la solution propos e pour utiliser un service limit en ressource et en m moire ou ne disposant pas d un r seau lui permettant d exporter son proxy En effet il n est pas rare de voir en domotique des appareils qui ne disposent pas de processeur v loce d une m moire d l phant et surtout d une machine virtuelle Java
57. ure restante FIG 4 Un distributeur de nourriture pour poissons package foodDistributor import Java rmi Remote import Java rmi RemoteException public interface foodDistributor extends Remote boolean giveFood Integer quantity throws RemoteException Integer remainingQuantity throws RemoteException 6 3 2 Ecriture du proxy Le proxy impl mente l interface Serializable et l interface foodDistributor du service Le proxy est cr par le service Ce dernier au moment de la construction passe en param tre le bout client utilis pour effectuer des appels de proc dure distance 10 D Mathieu Despont Constructeur du proxy foodDistributorProxy foodDistributor serverProxy this serverProxy serverProxy Ensuite il est temps d impl menter les m thodes de l interface du service Le bout client ici appel serverProxy est utilis pour pour contacter le serveur via RMI public boolean giveFood Integer quantity throws RemoteException return serverProxy giveFood quantity l public Integer remainingQuantity throws RemoteException return serverProxy remainingQuantity 6 3 3 Ecriture de l impl mentation du service Le but principal de l impl mentation du service est comme son nom l indique d impl menter le service mais pas seulement Voici bri vement les diff rentes tapes que le service va accomplir pour tre disponible 1 La m thode main cr e un nouveau service Dans notre
58. xy s curis sont les suivantes Le bout client est extrait du proxy t l charg de mani re non s curis e Le bout client est utilis pour contacter le service et lui demander de s authentifer Si l authentification est accept e le serveur retourne un objet verifier Le verifier permet au service de v rifier lui aussi le proxy Les droits d acc s sont donn s de mani re dynamique au proxy Le proxy est autoris effectuer des appels de m thodes distance avec le serveur Client Contraintes Bootstrap proxy service dl jar Gestion dynamique des droits Service de recherche FIG 11 Les diff rentes tapes pour v rifier un proxy 11 5 Certificat X 509 Pr c demment nous avons parl de cl publique et cl priv e Afin de g rer de mani re coh rente toutes ces cl s Nous utilisons des certificats Le certificat est un conteneur qui est capable de stocker dans une m me entit des cl s et des informations sur le d tenteur de la cl Un certificat une dur e de validit et peut tre sign par une autorit de certification Dans notre cas un certificat va tre fourni chaque service ou client Le service de recherche sera galement certifi Un certificat est en g n ral pr sent sous la forme d un fichier Cert Dans notre cas on va encore inclure le certificat dans un porte cl le Keystore C est un format qui est propri
Download Pdf Manuals
Related Search
Related Contents
Control automático de presión de neumáticos Programa Quick User Guide -Body worn TOD version EcoKill # 299950 Télécharger le PDF - Forestier & Hinfray Optima Batteries P90 Digital Camera User Manual MC13xx User Manual MANUEL D`UTILISATION Advance Acoustic MAT 605 audio tuner User Manual User Manual Copyright © All rights reserved.
Failed to retrieve file