© 2003 Patrick Brunner Spontane Vernetzung – Jini 9. Januar 2004 Spontane Vernetzung Patrick...

22
© 2003 Patrick Brunner Spontane Vernetzung – Jini 9. Januar 2004 Spontane Vernetzung Patrick Brunner

Transcript of © 2003 Patrick Brunner Spontane Vernetzung – Jini 9. Januar 2004 Spontane Vernetzung Patrick...

Page 1: © 2003 Patrick Brunner Spontane Vernetzung – Jini 9. Januar 2004 Spontane Vernetzung Patrick Brunner.

© 2003 Patrick BrunnerSpontane Vernetzung – Jini

9. Januar 2004

Spontane Vernetzung

Patrick Brunner

Page 2: © 2003 Patrick Brunner Spontane 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

Page 3: © 2003 Patrick Brunner Spontane Vernetzung – Jini 9. Januar 2004 Spontane Vernetzung Patrick Brunner.

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

Page 4: © 2003 Patrick Brunner Spontane Vernetzung – Jini 9. Januar 2004 Spontane Vernetzung Patrick Brunner.

© 2003 Patrick BrunnerSpontane Vernetzung – Jini

9. Januar 2004

Jini Föderation

Page 5: © 2003 Patrick Brunner Spontane Vernetzung – Jini 9. Januar 2004 Spontane Vernetzung Patrick Brunner.

© 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

Page 6: © 2003 Patrick Brunner Spontane Vernetzung – Jini 9. Januar 2004 Spontane Vernetzung Patrick Brunner.

© 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

Page 7: © 2003 Patrick Brunner Spontane Vernetzung – Jini 9. Januar 2004 Spontane Vernetzung Patrick Brunner.

© 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

Page 8: © 2003 Patrick Brunner Spontane Vernetzung – Jini 9. Januar 2004 Spontane Vernetzung Patrick Brunner.

© 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

Page 9: © 2003 Patrick Brunner Spontane Vernetzung – Jini 9. Januar 2004 Spontane Vernetzung Patrick Brunner.

© 2003 Patrick BrunnerSpontane Vernetzung – Jini

9. Januar 2004

Discovery (von Client oder Service) 3/3

Page 10: © 2003 Patrick Brunner Spontane Vernetzung – Jini 9. Januar 2004 Spontane Vernetzung Patrick Brunner.

© 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

Page 11: © 2003 Patrick Brunner Spontane Vernetzung – Jini 9. Januar 2004 Spontane Vernetzung Patrick Brunner.

© 2003 Patrick BrunnerSpontane Vernetzung – Jini

9. Januar 2004

Join: Registrierung eines Services 2/2

Page 12: © 2003 Patrick Brunner Spontane Vernetzung – Jini 9. Januar 2004 Spontane Vernetzung Patrick Brunner.

© 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

Page 13: © 2003 Patrick Brunner Spontane Vernetzung – Jini 9. Januar 2004 Spontane Vernetzung Patrick Brunner.

© 2003 Patrick BrunnerSpontane Vernetzung – Jini

9. Januar 2004

Lookup: Suchen eines Dienstes 2/2

Page 14: © 2003 Patrick Brunner Spontane Vernetzung – Jini 9. Januar 2004 Spontane Vernetzung Patrick Brunner.

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

Page 15: © 2003 Patrick Brunner Spontane Vernetzung – Jini 9. Januar 2004 Spontane Vernetzung Patrick Brunner.

© 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

Page 16: © 2003 Patrick Brunner Spontane Vernetzung – Jini 9. Januar 2004 Spontane Vernetzung Patrick Brunner.

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

Page 17: © 2003 Patrick Brunner Spontane Vernetzung – Jini 9. Januar 2004 Spontane Vernetzung Patrick Brunner.

© 2003 Patrick BrunnerSpontane Vernetzung – Jini

9. Januar 2004

Jini Implementierungen 1/2

1 Service pro JVM mehrer Services pro JVM

Page 18: © 2003 Patrick Brunner Spontane Vernetzung – Jini 9. Januar 2004 Spontane Vernetzung Patrick Brunner.

© 2003 Patrick BrunnerSpontane Vernetzung – Jini

9. Januar 2004

Jini Implementierungen 2/2

Jini Service als Proxy für Legacy Services

Page 19: © 2003 Patrick Brunner Spontane Vernetzung – Jini 9. Januar 2004 Spontane Vernetzung Patrick Brunner.

© 2003 Patrick BrunnerSpontane Vernetzung – Jini

9. Januar 2004

Java Spaces (ein Jini Service) 1/4

Page 20: © 2003 Patrick Brunner Spontane Vernetzung – Jini 9. Januar 2004 Spontane Vernetzung Patrick Brunner.

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

Page 21: © 2003 Patrick Brunner Spontane Vernetzung – Jini 9. Januar 2004 Spontane Vernetzung Patrick Brunner.

© 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

Page 22: © 2003 Patrick Brunner Spontane Vernetzung – Jini 9. Januar 2004 Spontane Vernetzung Patrick Brunner.

© 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