© 2003 Patrick BrunnerSpontane Vernetzung – Jini
9. Januar 2004
Spontane Vernetzung
Patrick Brunner
© 2003 Patrick BrunnerSpontane 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 BrunnerSpontane 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 BrunnerSpontane Vernetzung – Jini
9. Januar 2004
Jini Föderation
© 2003 Patrick BrunnerSpontane 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 BrunnerSpontane 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 BrunnerSpontane 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 BrunnerSpontane 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 BrunnerSpontane Vernetzung – Jini
9. Januar 2004
Discovery (von Client oder Service) 3/3
© 2003 Patrick BrunnerSpontane 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 BrunnerSpontane Vernetzung – Jini
9. Januar 2004
Join: Registrierung eines Services 2/2
© 2003 Patrick BrunnerSpontane 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 BrunnerSpontane Vernetzung – Jini
9. Januar 2004
Lookup: Suchen eines Dienstes 2/2
© 2003 Patrick BrunnerSpontane 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 BrunnerSpontane 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 BrunnerSpontane 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 BrunnerSpontane Vernetzung – Jini
9. Januar 2004
Jini Implementierungen 1/2
1 Service pro JVM mehrer Services pro JVM
© 2003 Patrick BrunnerSpontane Vernetzung – Jini
9. Januar 2004
Jini Implementierungen 2/2
Jini Service als Proxy für Legacy Services
© 2003 Patrick BrunnerSpontane Vernetzung – Jini
9. Januar 2004
Java Spaces (ein Jini Service) 1/4
© 2003 Patrick BrunnerSpontane Vernetzung – Jini
9. Januar 2004
Java Spaces (ein Jini Service) 2/4
JavaSpaces stellt eine Möglichkeit zur verteilten Speicherung von Java-Objekten
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 istnotify(Entry template, ..), benachrichtigt ein Java-Objekt, falls der Eintrag, der
dem Muster von template entspricht, in den JavaSpace geschrieben wurde (Pattern-Matching).
© 2003 Patrick BrunnerSpontane 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ützenEntry, kennzeichnet das Java-Objekt als Tupel
© 2003 Patrick BrunnerSpontane 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
Top Related