Was ist Jini?

Werbung
Spontane Vernetzung
Patrick Brunner
© 2003 Patrick Brunner
Spontane Vernetzung – Jini
9. Januar 2004
Was ist Jini?

1998 Projekt namens Jini wird unter Bill Joy und Jim Waldo
vorangetrieben. (Jini = „Java Intelligent Network Infrastructure“)

Ziel: Möglichkeit zu bieten Services in Plug and Play Manier zu
verteilen

Spezifikation von Middleware Komponenten

beinhaltet APIs zum Bau von Clients oder Services

In Java geschriebene Implementierung
© 2003 Patrick Brunner
Spontane Vernetzung – Jini
9. Januar 2004
Dienstparadigma

Alles ist Dienst (Hardware, Software)

Dienste werden über Interfaces definiert stellen darüber ihre
Funktionalität zur Verfügung.

Dienst ist durch seinen Objekttyp und seine Attribute
charakterisiert.

Dienste und Dienstnutzer finden sich spontan zu einer Föderation
zusammen.
© 2003 Patrick Brunner
Spontane Vernetzung – Jini
9. Januar 2004
Jini Föderation
© 2003 Patrick Brunner
Spontane Vernetzung – Jini
9. Januar 2004
Komponenten in Jini




Service: z.B. Toaster, Partnervermittlung, Drucker
Client: Applikation, die einen Service verwenden möchte
Lookup Service: Vermittelt dem Client einen Service
Netzwerk: Implementierung TCP/IP, nach Spezifikation aber nicht
zwingend
© 2003 Patrick Brunner
Spontane Vernetzung – Jini
9. Januar 2004
Java Bezug von Jini

JVM als Bytecode Interpreter

RMI für Kommunikation zwischen
den Komponenten

Somit gewisse Homogenität in
einer heterogenen Umgebung

Sicherheit von Java überträgt sich
auf Jini
© 2003 Patrick Brunner
Spontane Vernetzung – Jini
9. Januar 2004
Discovery (von Client oder Service) 1/3

Ziel: Client oder Service (Hosts) sollen mit Lookup Service
kommunizieren können.

Lookup Service hört auf TCP- und UDP-Port 4160

Somit 2 Möglichkeiten Lookup Service zu finden:
1. Unicast (Host kennt Adresse des Lookup Services bereits)
2. Multicast Requests (Multicastgruppe 224.0.1.85; zumeist nur
innerhalb des LANs möglich, da Multicast Pakete meistens
nicht geroutet werden) ähnlich DHCP
© 2003 Patrick Brunner
Spontane Vernetzung – Jini
9. Januar 2004
Discovery (von Client oder Service) 2/3

Lookup Service (LUS) sendet Stellvertreter-Objekt (LUS Proxy) an Host
(Serialisiertes Objekt via TCP Verbindung)

LUS Proxy läuft nun in JVM des Host (Code Shipping)

Host kann nun über LUS Proxy mit LUS kommunizieren
© 2003 Patrick Brunner
Spontane Vernetzung – Jini
9. Januar 2004
Discovery (von Client oder Service) 3/3
© 2003 Patrick Brunner
Spontane Vernetzung – Jini
9. Januar 2004
Join: Registrierung eines Services 1/2

Ziel: Funktionalität des LUS Proxys nutzten um eigen Proxy an LUS zu
senden.

Service muss einen LUS Proxy besitzen (Discovery)

zudem können noch Attribute gesendet werden (Genaue Service
Beschreibung)

LUS Proxy gibt Lease an Service (Gültigkeitsdauer der Registrierung,
Service schlägt Lease Zeit vor, gegebenenfalls kann LUS Lease Dauer
heruntersetzen)

LUS verwaltet Service Proxy

Service kann nun in der Jini Föderation gefunden werden
© 2003 Patrick Brunner
Spontane Vernetzung – Jini
9. Januar 2004
Join: Registrierung eines Services 2/2
© 2003 Patrick Brunner
Spontane Vernetzung – Jini
9. Januar 2004
Lookup: Suchen eines Dienstes 1/2

Client muss LUS Proxy besitzen (Discovery)

Client formuliert Query (erstellt ServiceTemplate-Objekt, welches
dem LUS Proxy übergeben wird)
public ServiceTemplate(ServiceID serviceID, java.lang.Class[] serviceTypes,
Entry[] attrSetTemplates))

Client bekommt ServiceMatches-Objekt vom LUS zurück, welches
die „Treffer“-Proxies enthält

Client man jetzt Dienst nun lokal auswählen
© 2003 Patrick Brunner
Spontane Vernetzung – Jini
9. Januar 2004
Lookup: Suchen eines Dienstes 2/2
© 2003 Patrick Brunner
Spontane Vernetzung – Jini
9. Januar 2004
Proxies

Proxies sind normalerweise Stellvertreter eines Services

Alle Daten werden an den Service weitergereicht (z.B. RMI)

Sinnvoll bei kleinen Datenmengen oder schwachen Clients

Protokoll für Kommunikation zwischen Proxy und Service kann beliebig sein
(auch zwischen LUS und LUS Proxy)
© 2003 Patrick Brunner
Spontane Vernetzung – Jini
9. Januar 2004
Smart Proxies

Erbringen eine Teil oder den ganzen Service beim Client (z.B.
Videokompression)

Darum muss Rechenleistung des Clients zur Verfügung stehen

Service hat nur noch die Aufgabe am Leben zu bleiben und Leases zu
erneuern

Entscheidung, ob Service mittels smarten oder normalen Proxies gebaut
wird liegt beim Entwickler, nicht beim Client
© 2003 Patrick Brunner
Spontane Vernetzung – Jini
9. Januar 2004
Proxy-Klassen

Serialisierte Proxy-Objekte werden
bei der Suche an den Client
geschickt

Problem: Client erhält Zustand des
Objekts, aber nicht dessen Klasse.

Lösung: Klasse wird z.B. auf
einem HTTP-Server zur Verfügung
gestellt. (Dem Client wird URI der
Klasse mittels speziellem
Property-Feld mitgeteilt.)
© 2003 Patrick Brunner
Spontane Vernetzung – Jini
9. Januar 2004
Jini Implementierungen 1/2
1 Service pro JVM
© 2003 Patrick Brunner
mehrer Services pro JVM
Spontane Vernetzung – Jini
9. Januar 2004
Jini Implementierungen 2/2
Jini Service als Proxy für Legacy Services
© 2003 Patrick Brunner
Spontane Vernetzung – Jini
9. Januar 2004
Java Spaces (ein Jini Service) 1/4
© 2003 Patrick Brunner
Spontane Vernetzung – Jini
9. Januar 2004
Java Spaces (ein Jini Service) 2/4


JavaSpaces stellt eine Möglichkeit zur verteilten Speicherung von JavaObjekten
Operationen:
write(..) Objekt in den Raum schreiben
take(..) Objekt aus dem Raum entfernen
takeIfExists(..) blockiert nicht, falls das gesuchte Objekt nicht vorhanden ist
read(..)
readIfExists, blockiert nicht, falls das gesuchte Objekt nicht vorhanden ist
notify(Entry template, ..), benachrichtigt ein Java-Objekt, falls der Eintrag, der
dem Muster von template entspricht, in den JavaSpace geschrieben wurde
(Pattern-Matching).
© 2003 Patrick Brunner
Spontane Vernetzung – Jini
9. Januar 2004
Java Spaces (ein Jini Service) 3/4

Ein Tupel entspricht einem Java-Objekt, welches zwei Marker-Interfaces
implementiert:
Serializable, um die RMI-Kommunikation im Netzwerk zu unterstützen
Entry, kennzeichnet das Java-Objekt als Tupel
© 2003 Patrick Brunner
Spontane Vernetzung – Jini
9. Januar 2004
Java Spaces (ein Jini Service) 4/4

US Army: Projekt zur Kommunikation von Schlachtfeld zu Tactical
Operation Center

Klinische Informationssysteme in Spitälern (Vernetzung
medizinischer Geräte)

Vernetzung von kleinen Wetterstationen
© 2003 Patrick Brunner
Spontane Vernetzung – Jini
9. Januar 2004
Herunterladen