jini : principes

14
Jini : principes Formation RICM2 / Polytech Fabienne Boyer – UFR IMA – 2006/2007

Upload: rich

Post on 01-Feb-2016

25 views

Category:

Documents


0 download

DESCRIPTION

Jini : principes. Formation RICM2 / Polytech Fabienne Boyer – UFR IMA – 2006/2007. Fonction de JINI. Découverte dynamique de services (impression, envoi/réception de mails, etc) dans un environnement distribué local - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Jini : principes

Jini : principes

Formation RICM2 / PolytechFabienne Boyer – UFR IMA – 2006/2007

Page 2: Jini : principes

2

Fonction de JINI

• Découverte dynamique de services (impression, envoi/réception de mails, etc) dans un environnement distribué local

– Modèle de programmation pour élaborer des services et les enregistrer/désenregistrer dynamiquement (‘Plug and Play’)

– Environnement d'exécution au dessus de TCP/IP + (RMI, IIOP, etc).

Page 3: Jini : principes

3

Concepts de JINI• Service

– Associé à un bail– Utilisable par une personne, un programme ou un autre service

• Services de base– Discovery service Lookup Service– Lookup service Service ref

• Service Protocol– Protocoles de communication entre services, défini par une API

en Java• Discovery protocol• Join protocol• Lookup protocol

– JINI n'intervient que pour la mise en correspondance des services

Page 4: Jini : principes

4

Jini Interaction Diagram

Jini Core

JiniEnabledService Client

request(multicast)

response(unicast) service ID

register

announce(multicast)

request(unicast)

response(unicast)

LookupService

Source: Jini tutorial session, as presented at the 2001 O'Reilly Enterprise Java Conference

Page 5: Jini : principes

5

Le Client JINI

• Discovery (bootstrap) Lookup Services refs• Lookup (Service template) Service refs• Accède aux Servicex via un proxy (stub RMI ou autre)

Page 6: Jini : principes

6

Lookup Service

• Fonctions– Etablir le contact entre un client et un service.– Composant principal de JINI (trader / bus à services).– Maintient les associations (spécifications, service)– La spécification d'un service peut comprendre ses

propriétés• Lookup(ServiceTemplate), où le Template a la forme

suivante: (indentifiant, specification, attributs).• Ex: (0, imprimante, couleur)

Page 7: Jini : principes

7

ServiceRegistrar

• Notion de ServiceRegistrars– Un ServiceRegistrar est un stub permettant d'interagir

avec un service

– Méthode register (utilisée par le serveur)• Enregistrement d'un service pour une durée

– Méthode lookup (utilisée par un client)• Récupère un objet proxy pour interagir avec le service

Page 8: Jini : principes

8

Discovery Service

• Permet de découvrir des Lookup Services – multicast request (l'espace de multicast est déterminé par un nom de groupe

UDP, qui identifie le type de services visés)– unicast request (le client connaît l'adresse de la machine auprès de laquelle il

souhaite trouver le lookup service)

• LookupDiscovery(group/@IP, ..) – l'application enregistre un DiscoveryListener

• Discoverylistener– les méthodes discovered() et discarded() sont invoquées de manière

asynchrone lors de l'apparition et de la disparition de LookupService• DiscoveryEvent

– contient les registrars des services qui apparaissent et disparaissent

Page 9: Jini : principes

9

Join Service

• Fonctions– Enregistrer un service.– Notion de bail (temps, ANY, FOREVER)– Le bail se termine de façon silencieuse (le

service n'est pas averti), et doit être renouvelé (renewing)

• JoinManager(service, attributs, object, …)

Page 10: Jini : principes

10

Interaction avec un service (exemples)

• Communication client-service nulle– Une copie du service est transmise au client

qui l'utilise localement (ex: bytecode Java).

• Communication via RMI– Un stub est transmis au client

• Communication via les sockets– Un protocole propriétaire est utilisé pour la

communication.

Page 11: Jini : principes

11

Client & Server JINI

• Serveur:– LookupDiscovery– Create information about a service– Join for the service– Renew leasing periodically

• Client– lookupDiscovery– Prepare a template for searching a service– Lookup (template)– Interact with the service

Page 12: Jini : principes

12

CODE SAMPLE: Client Jinipublic class Client implements DiscoveryListener {

public void discovered(DiscoveryEvent e) {//Récupération des lookup services trouvés par le lookupDiscoveryObject[] lks = e.getRegistrars();…

} public void discarded(DiscoveryEvent e) {

… }

public Object getService(ServiceRegistrar regs[], ServiceTemplate tmpl) {. . .o = regs[i].lookup(tmpl); return o;

} public void main(..) {

… new LookupDiscovery((LookupDiscovery.ALL-GROUPS).addDiscoveryListener(this);

while (attendre) {Thread.sleep(..);} service = getService(template);

service.XXX(…); }

Page 13: Jini : principes

13

CODE SAMPLE: Server Jini

public class Server implements ServiceIDListener {

public void serviceIDNotify(ServiceID sid) {// service enregistré auprès d'un LSServiceRegistrar regs[] = jm.getJoinSet();for (int i=0; i>regs.length; i++)

System.out.println(regs[i].getLocator();..

}

public void main(..) {…

service = new Service(…); lkd=new LookupDiscovery((LookupDiscovery.ALL-GROUPS).addDiscoveryListener(this); new JoinManager(service, entries, this, lkd, null); while (attendre) {Thread.sleep(..);}}

Page 14: Jini : principes

14

Autres liens• Online

– www.jini.org/– www.litefaden.com/sv/jd/– www.javacoffeebreak.com/books/extracts/jini/jini.html– www.artima.com/jini/ - Bill Venners– www.carbonfive.com/oreilly - This Presentation

• Books– Core Jini, 2nd Edition

• W. Keith Edwards– A Programmers Guide to Jini Technology

• Jan Newmarch– The Jini Specifications, 2nd Edition

• Jim Waldo– JavaSpaces Principles, Patterns, and Practice

• Freeman, Hupfer, Arnold