jini : principes

Post on 01-Feb-2016

27 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

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

Jini : principes

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

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).

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

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

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)

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)

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

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

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, …)

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.

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

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(…); }

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(..);}}

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

top related