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