MKVS-.bung WS 2002/2003 - … · MKVS-.bung WS 2002/2003 - ... k ★

55
Übung zur Vorlesung Moderne Konzepte Verteilter Systeme Copyright © 2002/2003 Andreas I. Schmied, Verteilte Systeme, Universität Ulm MKVS-Uebung-A.fm (13 Nov 2002 15:18) Reproduktion oder Verwendung dieser Unterlagen bedarf in jedem Fall der Zustimmung des Autors A-1 (von 5) MKVS-Übung WS 2002/2003 A Einführung Übung zur Vorlesung „Moderne Konzepte Verteilter Systeme“ (WS 2002/2003) A Einführung

Transcript of MKVS-.bung WS 2002/2003 - … · MKVS-.bung WS 2002/2003 - ... k ★

Page 1: MKVS-.bung WS 2002/2003 -  … · MKVS-.bung WS 2002/2003 -  ... k ★

as I. Schmied, Verteilte Systeme, Universität Ulmbedarf in jedem Fall der Zustimmung des Autors A-1

(von 5)

MKV

S-Ü

bung

WS

2002

/200

3A

Ein

führ

ung

erteilter Systeme“(WS 2002/2003)

Übung zur Vorlesung Moderne Konzepte Verteilter Systeme Copyright © 2002/2003 AndreMKVS-Uebung-A.fm (13 Nov 2002 15:18) Reproduktion oder Verwendung dieser Unterlagen

Übung zur Vorlesung „Moderne Konzepte V

A Einführung

Page 2: MKVS-.bung WS 2002/2003 -  … · MKVS-.bung WS 2002/2003 -  ... k ★

as I. Schmied, Verteilte Systeme, Universität Ulmbedarf in jedem Fall der Zustimmung des Autors A-2

(von 5)

MKV

S-Ü

bung

WS

2002

/200

3A

Ein

führ

ung

1 Übungsbetrieb

teme)

r im Raum O28-2203

Übung zur Vorlesung Moderne Konzepte Verteilter Systeme Copyright © 2002/2003 AndreMKVS-Uebung-A.fm (13 Nov 2002 15:18) Reproduktion oder Verwendung dieser Unterlagen

● Betreuung

Andreas I. Schmied (Abteilung Verteilte Sys

Zimmer O27-3401

Telefon 50-24148

Email [email protected]

Michael Kirstein (Studentische Hilfskraft)

Email [email protected]

● Zeitpunkt

nach Bedarf am Donnerstag ab 10 bzw. 16 Uh

Page 3: MKVS-.bung WS 2002/2003 -  … · MKVS-.bung WS 2002/2003 -  ... k ★

as I. Schmied, Verteilte Systeme, Universität Ulmbedarf in jedem Fall der Zustimmung des Autors A-3

(von 5)

MKV

S-Ü

bung

WS

2002

/200

3A

Ein

führ

ung

2 Zielsetzung und Ablaufestellten Technologien

in Spezifikationen ?)

Interesse)

ng

treibenden Aufwands

kalierbarkeit

Übung zur Vorlesung Moderne Konzepte Verteilter Systeme Copyright © 2002/2003 AndreMKVS-Uebung-A.fm (13 Nov 2002 15:18) Reproduktion oder Verwendung dieser Unterlagen

● Verstehen, Erproben der in der Vorlesung vorg● Detailansicht “hinter dem Vorhang” (was steht

✦ Reverse-Engineering muss jeder selber machen (bei ✦ Hinweise und Zusammenfassungen dazu in der Übu

● Vergleich des Benutzer-Quellcodes und des zu

von ähnlichen Systemen, evtl. QoS-fähigkeit, S

● Tutorial, Diskussion, und Aufgabenstellung

● Freies Programmieren in den (Linux-)Pools✦ Termin mit Betreuung ?

Page 4: MKVS-.bung WS 2002/2003 -  … · MKVS-.bung WS 2002/2003 -  ... k ★

as I. Schmied, Verteilte Systeme, Universität Ulmbedarf in jedem Fall der Zustimmung des Autors A-4

(von 5)

MKV

S-Ü

bung

WS

2002

/200

3A

Ein

führ

ung

3 Rechnernutzung

Übung zur Vorlesung Moderne Konzepte Verteilter Systeme Copyright © 2002/2003 AndreMKVS-Uebung-A.fm (13 Nov 2002 15:18) Reproduktion oder Verwendung dieser Unterlagen

● Linux-Pool (O27-133)✦ Software

★ Java 1.4, momentan /soft/jdk1.4.0● Windows-Pool ?● Webserver „Studihome“, Ports, Firewall

Page 5: MKVS-.bung WS 2002/2003 -  … · MKVS-.bung WS 2002/2003 -  ... k ★

as I. Schmied, Verteilte Systeme, Universität Ulmbedarf in jedem Fall der Zustimmung des Autors A-5

(von 5)

MKV

S-Ü

bung

WS

2002

/200

3A

Ein

führ

ung

4 Übungsaufgaben: die Vision

derator)

nodes, AKA News-Thread)

ungen (kein DAG)

unktionalität zu erweitern

Java-RMI, CORBA

nzen

Übung zur Vorlesung Moderne Konzepte Verteilter Systeme Copyright © 2002/2003 AndreMKVS-Uebung-A.fm (13 Nov 2002 15:18) Reproduktion oder Verwendung dieser Unterlagen

● Abteilungsweite Knowledge-Base✦ Hierarchie von Themenknoten (topic nodes, mit Mo✦ angeknüpft eine Hierarchie von Notizknoten (memo✦ beliebige gerichtete Links zwischen Knoten/Anmerk✦ pro Übungsabschnitt schrittweise um Technologie/F

● MKVS/OO: Zugriffs-API implementiert mittels ✦ Interoperabilität ?

● MKVS/Services: um ein Web-Frontend zu ergä✦ Servlets, JSP, Taglibs, ...✦ EJB, ...

Page 6: MKVS-.bung WS 2002/2003 -  … · MKVS-.bung WS 2002/2003 -  ... k ★

as I. Schmied, Verteilte Systeme, Universität Ulmbedarf in jedem Fall der Zustimmung des Autors B-1

(von 50)

MKV

S-Ü

bung

WS

2002

/200

3B

Jav

a Re

mot

e In

voca

tion

erteilter Systeme“(WS 2002/2003)

Übung zur Vorlesung Moderne Konzepte Verteilter Systeme Copyright © 2002/2003 AndreMKVS-Uebung-B.fm (13 Nov 2002 15:18) Reproduktion oder Verwendung dieser Unterlagen

Übung zur Vorlesung „Moderne Konzepte V

B Java Remote Invocation

Page 7: MKVS-.bung WS 2002/2003 -  … · MKVS-.bung WS 2002/2003 -  ... k ★

as I. Schmied, Verteilte Systeme, Universität Ulmbedarf in jedem Fall der Zustimmung des Autors B-2

(von 50)

MKV

S-Ü

bung

WS

2002

/200

3B

Jav

a Re

mot

e In

voca

tion

1 Literatur.], dpunkt.verlag

ialization

, .../serial-spec.pdf

evpro.sourceforge.net

rieren: „javadoc -private“

gekürzt

Übung zur Vorlesung Moderne Konzepte Verteilter Systeme Copyright © 2002/2003 AndreMKVS-Uebung-B.fm (13 Nov 2002 15:18) Reproduktion oder Verwendung dieser Unterlagen

● Marko Boger: „Java in verteilten Systemen“ [..● java.sun.com - RMI und Serialization

✦ http://java.sun.com/j2se/1.4.1/docs/guide/rmi, .../ser✦ ftp://ftp.java.sun.com/docs/j2se1.4/rmi-spec-1.4.pdf

● lokale Java-Quellen: /soft/jdk1.4.0/src.zip✦ Decompiler z.B. http://jode.sourceforge.net, http://jr✦ API-Dokumentation für private-Texte ggf. neu gene

● Materialien auf der Website zur Vorlesung● Entwicklungstools

✦ Ant: http://jakarta.apache.org/ant✦ JUnit: http://junit.org

● Code-Snippets auf den folgenden Folien sind

Page 8: MKVS-.bung WS 2002/2003 -  … · MKVS-.bung WS 2002/2003 -  ... k ★

as I. Schmied, Verteilte Systeme, Universität Ulmbedarf in jedem Fall der Zustimmung des Autors B-3

(von 50)

MKV

S-Ü

bung

WS

2002

/200

3B

Jav

a Re

mot

e In

voca

tion

2 Roadmap

e

Übung zur Vorlesung Moderne Konzepte Verteilter Systeme Copyright © 2002/2003 AndreMKVS-Uebung-B.fm (13 Nov 2002 15:18) Reproduktion oder Verwendung dieser Unterlagen

● Sehr kurze Wiederholung der RMI-Basics,

danach detailierter Einblick in die RMI-Runtim● Etablieren eines Servers

✦ Problemfeld Remote-Interfaces, RemoteExceptions✦ Serverseitige Implementierung✦ Export✦ Stubs, Skeletons, ...✦ Veröffentlichen von Serveradressen

● RMI-Transport✦ Serialisierung✦ Custom-Marshalling✦ RMI-Marshalling

Page 9: MKVS-.bung WS 2002/2003 -  … · MKVS-.bung WS 2002/2003 -  ... k ★

as I. Schmied, Verteilte Systeme, Universität Ulmbedarf in jedem Fall der Zustimmung des Autors B-4

(von 50)

MKV

S-Ü

bung

WS

2002

/200

3B

Jav

a Re

mot

e In

voca

tion

2 Roadmap (2)

sfer

ig oder als separates— er dient ausschließlich n Java-SDK-Sourcen.

Übung zur Vorlesung Moderne Konzepte Verteilter Systeme Copyright © 2002/2003 AndreMKVS-Uebung-B.fm (13 Nov 2002 15:18) Reproduktion oder Verwendung dieser Unterlagen

● Aufgaben des Clients✦ Initiales Finden eines Servers✦ Methodenaufruf ohne/mit Exception, Parametertran

● kurzer Überblick zu✦ Dynamisches Laden von Code✦ Distributed Garbage Collection✦ RMI Wire Protocol

● Übungsaufgabe

Dieser Foliensatz ist in keiner Weise vollständ didaktisch wertvolles Lehrmaterial ausgearbeitet

als Anregung zum eigenen Recherchieren in de

Page 10: MKVS-.bung WS 2002/2003 -  … · MKVS-.bung WS 2002/2003 -  ... k ★

as I. Schmied, Verteilte Systeme, Universität Ulmbedarf in jedem Fall der Zustimmung des Autors B-5

(von 50)

MKV

S-Ü

bung

WS

2002

/200

3B

Jav

a Re

mot

e In

voca

tion

3 RMI-Überblick Fernaufruf in Java

en

ig Anpassung

Übung zur Vorlesung Moderne Konzepte Verteilter Systeme Copyright © 2002/2003 AndreMKVS-Uebung-B.fm (13 Nov 2002 15:18) Reproduktion oder Verwendung dieser Unterlagen

● Verteiltes Objektmodell für objektorientierten✦ Das bekannte Programmiermodell soll erhalten bleib

★ Erhalt der java.lang.Object-Semantik wo möglich, wenn nöt✦ über beliebige VM-Grenzen möglich✦ Robustheit der entstehenden Software✦ Typsicherheit wie im nicht-verteilten Fall✦ Sicherheitssystem der Java Plattform

★ Class Loader, Security Manager✦ Verschiedene Referenzsemantiken

★ transient, persistent, lazy activatable✦ Wichtigstes Ausdrucksmittel: Remote Interfaces

Page 11: MKVS-.bung WS 2002/2003 -  … · MKVS-.bung WS 2002/2003 -  ... k ★

as I. Schmied, Verteilte Systeme, Universität Ulmbedarf in jedem Fall der Zustimmung des Autors B-6

(von 50)

MKV

S-Ü

bung

WS

2002

/200

3B

Jav

a Re

mot

e In

voca

tion

4 Remote Interfaces

deklarieren

Substitution Principle)

t diese Bedingung erfüllen

ntegration alter Interfaces

n nicht unbedingt erben

zen zu verwenden

Server vorhanden

Übung zur Vorlesung Moderne Konzepte Verteilter Systeme Copyright © 2002/2003 AndreMKVS-Uebung-B.fm (13 Nov 2002 15:18) Reproduktion oder Verwendung dieser Unterlagen

● erben java.rmi.Remote (als marker interface)✦ kann über Super-Interfaces geerbt sein

● jede Methode muss java.rmi.RemoteException✦ oder java.io.IOException, java.lang.Exception (Liskov

★ beim Erben eines Non-Remote-Interfaces muss es zumindes✦ sichert Robustheit von RMI-Anwendungen✦ behindert vollständige Verteilungstransparenz und I✦ eigene Exceptions müssen java.rmi.RemoteExceptio

★ java.lang.Throwable implements java.io.Serializable

● als Typen für Methodenparameter und Referen✦ nicht die implementierenden Klassen, da i.A. nur am

Page 12: MKVS-.bung WS 2002/2003 -  … · MKVS-.bung WS 2002/2003 -  ... k ★

as I. Schmied, Verteilte Systeme, Universität Ulmbedarf in jedem Fall der Zustimmung des Autors B-7

(von 50)

MKV

S-Ü

bung

WS

2002

/200

3B

Jav

a Re

mot

e In

voca

tion

5 Remote Server Implementierungvon „Server Application“

bjektimplementierungen

en Thread verwenden

ectindungsannahme aktivieren)

er RMI-Runtime sicherstellen

thode exportObject auf

i.RemoteObject

n

ode nachladen zu können

erver Achtung: Slash am Pfadende!

Übung zur Vorlesung Moderne Konzepte Verteilter Systeme Copyright © 2002/2003 AndreMKVS-Uebung-B.fm (13 Nov 2002 15:18) Reproduktion oder Verwendung dieser Unterlagen

● CORBA-Jargon: „Servant“ zur Unterscheidung ✦ Servant verkörpert („incarnate“) ein oder mehrere O

● RMI-Runtime kann pro Methodenaufruf eigen✦ Servant muss thread-safe sein !

● erbt i.A. von java.rmi.server.UnicastRemoteObj✦ automatischer Export (Runtime-OID vergeben, Verb✦ ansonsten muss der Entwickler die Anforderungen d

★ Export des Objekts → Konstruktor ruft interne statische Me★ Erhalt der Objektsemantik → Realisierung beginnt in java.rm

● gibt beim Start eine „Codebase“ als Property a✦ beim Marshalling zum Client übermittelt, um dort C✦ Webserver mit jar-File (global), File-URL (lokal), ...

★ java -Djava.rmi.server.codebase="file:‘pwd‘/" mkvs.simple.S

Page 13: MKVS-.bung WS 2002/2003 -  … · MKVS-.bung WS 2002/2003 -  ... k ★

as I. Schmied, Verteilte Systeme, Universität Ulmbedarf in jedem Fall der Zustimmung des Autors B-8

(von 50)

MKV

S-Ü

bung

WS

2002

/200

3B

Jav

a Re

mot

e In

voca

tion

5.1 RMI-Objektsemantik

r realisiert���������

oteObject redefiniert

en den gleichen Hashcode

n sie an das gleiche RemoteObject

Übung zur Vorlesung Moderne Konzepte Verteilter Systeme Copyright © 2002/2003 AndreMKVS-Uebung-B.fm (13 Nov 2002 15:18) Reproduktion oder Verwendung dieser Unterlagen

● Marshalling✦ by-reference, wenn der Servant exportiert ist✦ by-copy, falls der Servant nicht exportiert ist✦ beide Varianten werden durch entsprechende Marke

������������ ������������������������������

● semantikerhaltende Methoden werden in Rem✦ vor allem equals(Object other) und hashCode()

★ zwei Stubs, die an das gleiche RemoteObject verweisen, bild★ zwei RemoteObjects (und damit zwei Stubs) sind gleich, wen

verweisen★ warum gerade diese beiden ?

Page 14: MKVS-.bung WS 2002/2003 -  … · MKVS-.bung WS 2002/2003 -  ... k ★

as I. Schmied, Verteilte Systeme, Universität Ulmbedarf in jedem Fall der Zustimmung des Autors B-9

(von 50)

MKV

S-Ü

bung

WS

2002

/200

3B

Jav

a Re

mot

e In

voca

tion

5.1 RMI-Objektsemantik (2)z-Objekt

isiert in der Klasse

an sun.rmi.transport.LiveRef)

ia UnicastRef → LiveRef → ObjID)

ct liefern identischen Hashcode

�������"���� ���#��

�����#��

sformungen

Übung zur Vorlesung Moderne Konzepte Verteilter Systeme Copyright © 2002/2003 AndreMKVS-Uebung-B.fm (13 Nov 2002 15:18) Reproduktion oder Verwendung dieser Unterlagen

● die Implementierung erfolgt in einem Referen✦ Referenz-Objekte sind vom Typ RemoteRef, z.B. real

sun.rmi.server.UnicastRef (diese wiederum delegiert ✦ Übergang von Vererbungshierarchie zu Delegation

★ siehe angedeuteter Link im Diagramm auf Seite B-11✦ int hashCode()

★ wird aus der Objekt-Nr. des Remote-Objekts gebildet (Impl.v★ unterschiedliche Stubs (RemoteRefs) des selben RemoteObje

����������������������������������� ����!��

✦ boolean equals(Object obj)����������������$%������������� ���� �

✦ je nach Einsatzgebiet unterschiedliche Referenz-Au★ Client-, ServerRef, aktivierbar, persistenzfähig, ...

Page 15: MKVS-.bung WS 2002/2003 -  … · MKVS-.bung WS 2002/2003 -  ... k ★

as I. Schmied, Verteilte Systeme, Universität Ulmbedarf in jedem Fall der Zustimmung des Autors B-10

(von 50)

MKV

S-Ü

bung

WS

2002

/200

3B

Jav

a Re

mot

e In

voca

tion

5.1 RMI-Objektsemantik (3) java.lang.Object

yp des Stubs

es Servants

t

ntime

Übung zur Vorlesung Moderne Konzepte Verteilter Systeme Copyright © 2002/2003 AndreMKVS-Uebung-B.fm (13 Nov 2002 15:18) Reproduktion oder Verwendung dieser Unterlagen

● Abweichende Semantik der final-Methoden in✦ getClass() liefert an Remote-Referenz den exakten T

★ Typ ist das am weitesten als Remote ausgeprägte Interface d✦ wait, notify operieren auf dem jeweils lokalen Objek

★ d.h. evtl. auf dem Stub, nicht dem originalen Server-Objekt

● RemoteObject liefert Stub-Objekt aus RMI-Ru✦ interne Verwaltung in sun.rmi.transport.ObjectTable

Page 16: MKVS-.bung WS 2002/2003 -  … · MKVS-.bung WS 2002/2003 -  ... k ★

as I. Schmied, Verteilte Systeme, Universität Ulmbedarf in jedem Fall der Zustimmung des Autors B-11

(von 50)

MKV

S-Ü

bung

WS

2002

/200

3B

Jav

a Re

mot

e In

voca

tion

6 Beispiel: mkvs.simple

����

��

� ��

���

���

������������������������� �����

��������������������������������

�������������� ��������������

���������0�0�1����0(�� ��02� ��0� �'0)��� *0(�� ��31��#�� �45

���������0 0�1����0�02� ��0� '0)��� *0�/31��#�� �45

0��������

Übung zur Vorlesung Moderne Konzepte Verteilter Systeme Copyright © 2002/2003 AndreMKVS-Uebung-B.fm (13 Nov 2002 15:18) Reproduktion oder Verwendung dieser Unterlagen

����������

����������

����������

���������

��������

��������� ������ ��������� ��� ��������������������������� ��� �!������������������

" ��#��$�%&'�������������������("� �')�� ��"� ')�� ��

��� ��

*���(�����+�& �������#�� ��#�

"����'����$�����,-)��

����������

����������

������

&��

"����'����$�����,-)�

�����

" ��#�')"� .')�� ��"� �')�� ��"� ')�� ��

������������������ ��

���������������� ������

�� ��������� ������������������

���������������� �����

�������������� �����������

����������/&�������������������� ��������

�����

"���#�')

(�� ��/&����.����&%��06���60*���70(�� ��(

Page 17: MKVS-.bung WS 2002/2003 -  … · MKVS-.bung WS 2002/2003 -  ... k ★

as I. Schmied, Verteilte Systeme, Universität Ulmbedarf in jedem Fall der Zustimmung des Autors B-12

(von 50)

MKV

S-Ü

bung

WS

2002

/200

3B

Jav

a Re

mot

e In

voca

tion

6 Beispiel: mkvs.simple (2)“ von B

tion

liche Anpassung zur RMI-

rver, Client}.java

s.simple.CImpl_Stub

ant eine DImpl-Instanz werden wird !

ionen siehe später

Übung zur Vorlesung Moderne Konzepte Verteilter Systeme Copyright © 2002/2003 AndreMKVS-Uebung-B.fm (13 Nov 2002 15:18) Reproduktion oder Verwendung dieser Unterlagen

● interface C erbt das Marker Interface „Remote● C.doC() „throws“ Superklasse der RemoteExcep

✦ siehe Kommentarbox rechts im Diagramm● interface A wird nicht im Stub wiedergegeben

✦ alter Schnittstellenkontrakt verhindert die nachträg

Fähigkeit

● Übersetzen + Generieren✦ „javac mkvs/simple/...“ mit {A, B, C, CImpl, DImpl, Se✦ rmic -v1.2 -keep mkvs.simple.CImpl → erzeugt mkv

★ Stub wird für CImpl, nicht für DImpl generiert, obwohl Serv★ JRMP-1.2-Stub ohne Skeleton, Unterschiede zu älteren Vers

Page 18: MKVS-.bung WS 2002/2003 -  … · MKVS-.bung WS 2002/2003 -  ... k ★

as I. Schmied, Verteilte Systeme, Universität Ulmbedarf in jedem Fall der Zustimmung des Autors B-13

(von 50)

MKV

S-Ü

bung

WS

2002

/200

3B

Jav

a Re

mot

e In

voca

tion

6.1 mkvs.simple.CImpl

�����,��

�$)���������3�'��

�$)���������3�'��

Übung zur Vorlesung Moderne Konzepte Verteilter Systeme Copyright © 2002/2003 AndreMKVS-Uebung-B.fm (13 Nov 2002 15:18) Reproduktion oder Verwendung dieser Unterlagen

���&�'���&(��������#

����� �(����������$)�����#����� �(���������(���*����������� ��#

��������������+�����)�� ��*����������� �����������

������������+��������-������$)��������

�����������(� � ,�������������.�������������/ ,0�#�����

�����������(� � 1���������22�-�����-�� ������&�����������������.�������������/ 10�#�����

�����������(� � ����������22�-�����-�� ������&�����������������.�������������/ �0�#������

Page 19: MKVS-.bung WS 2002/2003 -  … · MKVS-.bung WS 2002/2003 -  ... k ★

as I. Schmied, Verteilte Systeme, Universität Ulmbedarf in jedem Fall der Zustimmung des Autors B-14

(von 50)

MKV

S-Ü

bung

WS

2002

/200

3B

Jav

a Re

mot

e In

voca

tion

6.1 mkvs.simple.CImpl (2)

Stub A nicht berücksichtigt

ervant bedient alle Clients

r

-Quellcodezeile:

t or declared to be thrown

die Servant-Instanz

Übung zur Vorlesung Moderne Konzepte Verteilter Systeme Copyright © 2002/2003 AndreMKVS-Uebung-B.fm (13 Nov 2002 15:18) Reproduktion oder Verwendung dieser Unterlagen

● implementiert alle Interfaces✦ wird jedoch nur B und C exportieren können, da der

● erbt UnicastRemoteObject✦ „Unicast“ = klassische Client/Server-Topologie = 1 S

★ point-to-point, nicht repliziert✦ transient gültig solange Serverprozess aktiv

● enthält einen erweiterten Default-Constructo✦ sonst verwirrender Übersetzungsfehler für „class ...“

unreported exception java.rmi.RemoteException; must be caugh✦ Default-Constructor ruft implizit super() auf

★ UnicastRemoteObject.<init> wird ausgeführt und exportiert

Page 20: MKVS-.bung WS 2002/2003 -  … · MKVS-.bung WS 2002/2003 -  ... k ★

as I. Schmied, Verteilte Systeme, Universität Ulmbedarf in jedem Fall der Zustimmung des Autors B-15

(von 50)

MKV

S-Ü

bung

WS

2002

/200

3B

Jav

a Re

mot

e In

voca

tion

6.2 mkvs.simple.Server

���

����(����������

.��$:+�;�<=>��;�#

���'������ �����#

Übung zur Vorlesung Moderne Konzepte Verteilter Systeme Copyright © 2002/2003 AndreMKVS-Uebung-B.fm (13 Nov 2002 15:18) Reproduktion oder Verwendung dieser Unterlagen

���&�'���&(��������#

����� �(����������$)�����#����� �(������4����'#����� �(��������'���.�5�����'���.#����� �(��������'���.���'���.#

����������������(����

������+��������#

������������(� ����������'67���'�����-��$)����

���������-�8+�����#��������22��������� ���9�)��

��'���.���'���5�����'���.��������'���.���'���

��'������ �/�&(��������0�������#��22��������(�!�4�

22�-�����-�� � ������(��9>�������������������� ���

Page 21: MKVS-.bung WS 2002/2003 -  … · MKVS-.bung WS 2002/2003 -  ... k ★

as I. Schmied, Verteilte Systeme, Universität Ulmbedarf in jedem Fall der Zustimmung des Autors B-16

(von 50)

MKV

S-Ü

bung

WS

2002

/200

3B

Jav

a Re

mot

e In

voca

tion

7 RemoteObjectethoden an RemoteRef

st beim Marshalling

t nichts (→ Sequenz-Diag.)

�$%������

# �#

�������22�-�����������94��������#���������22�������$)��������#��22$)����

ef.-Modi (→ Activation)

Übung zur Vorlesung Moderne Konzepte Verteilter Systeme Copyright © 2002/2003 AndreMKVS-Uebung-B.fm (13 Nov 2002 15:18) Reproduktion oder Verwendung dieser Unterlagen

● RemoteObject delegiert semantikerhaltende M● Transferiert die RemoteRef anstelle seiner selb

✦ UnicastRef delegiert an LiveRef, UnicastServerRef tu������������������� �����������������������#����� ������%�������→���������"���� �������������������������������� �������� ��������������������������������������������������������������� ��;�����'������

����(���(� �-����� ��� �(������ ������������������������������-���-�?�������$)�������#�����������@����&���/������-���*;A�//�#���-����� ������@��&���/��������-���*;A����4����#�����-���

��������

● Trennung von Objekt u. Referenz wegen div. R

Page 22: MKVS-.bung WS 2002/2003 -  … · MKVS-.bung WS 2002/2003 -  ... k ★

as I. Schmied, Verteilte Systeme, Universität Ulmbedarf in jedem Fall der Zustimmung des Autors B-17

(von 50)

MKV

S-Ü

bung

WS

2002

/200

3B

Jav

a Re

mot

e In

voca

tion

8 RemoteServerigenen Code-Digging)�������"���#

ang.ThreadLocal

en eigenen Bearbeitungs-Thread

Übung zur Vorlesung Moderne Konzepte Verteilter Systeme Copyright © 2002/2003 AndreMKVS-Uebung-B.fm (13 Nov 2002 15:18) Reproduktion oder Verwendung dieser Unterlagen

● Quellcode-Fundstück (zum Verständnis beim e��������������������(����)�� �������� ����������'�'������"������-�����(��4,��(�$)���������������������������;�>;�������'�����

��

✦ getClientHost nutzt ThreadLocalStorage (TLS): java.l★ RMI-Runtime vergibt pro Bearbeitung eines Client-Calls ein

Page 23: MKVS-.bung WS 2002/2003 -  … · MKVS-.bung WS 2002/2003 -  ... k ★

as I. Schmied, Verteilte Systeme, Universität Ulmbedarf in jedem Fall der Zustimmung des Autors B-18

(von 50)

MKV

S-Ü

bung

WS

2002

/200

3B

Jav

a Re

mot

e In

voca

tion

9 UnicastRemoteObject Servant-Export ?

t(this, ...) auf

odus verwendet

erRef als Referenz-Name

f, RMIServerSocketFactory ssf)

er Referenz mitgeteilt werden

ver CustomSocket-Klassen nachladen

, ...opt.Params wie Port)

rce)

bject(obj, force)

abgebrochen

Übung zur Vorlesung Moderne Konzepte Verteilter Systeme Copyright © 2002/2003 AndreMKVS-Uebung-B.fm (13 Nov 2002 15:18) Reproduktion oder Verwendung dieser Unterlagen

● zu betrachten: wie funktioniert automatischer● drei Constructor-Varianten rufen exportObjec

✦ je nach Variante wird intern ein anderer Referenz-M✦ ...() und ...(int port) verwenden refType=UnicastServ✦ UnicastRemoteObject (int port, RMIClientSocketFactory cs

verwendet refType=UnicastServerRef2★ Information über CustomSockets kann somit dem Client in d★ darauf kann der Client vor der Kommunikation mit dem Ser

● static exportObject(Remote obj, String refType● static unexportObject(Remote obj, boolean fo

✦ delegiert an sun.rmi.transport.ObjectTable.unexportO✦ force=true → laufende und wartende Calls werden

Page 24: MKVS-.bung WS 2002/2003 -  … · MKVS-.bung WS 2002/2003 -  ... k ★

as I. Schmied, Verteilte Systeme, Universität Ulmbedarf in jedem Fall der Zustimmung des Autors B-19

(von 50)

MKV

S-Ü

bung

WS

2002

/200

3B

Jav

a Re

mot

e In

voca

tion

9.1 UnicastRemoteObject.exportObject

������

":�����')�� ��

���������������

�� ������������� �������� ��������

�����������

"�1# ��/&����')�� ��

���������� �����

"�1# ��/&����')�� ��"��$7���� �')�� ��"��#����')�� ��

������������

"�1# ��/&����')�� ��"�����')�� ��

Übung zur Vorlesung Moderne Konzepte Verteilter Systeme Copyright © 2002/2003 AndreMKVS-Uebung-B.fm (13 Nov 2002 15:18) Reproduktion oder Verwendung dieser Unterlagen

Skizze der beteiligten Klassen

88��#�������99�������������������

�������������������

����������� ��

������������������

����������������������

����������� �����

����������

���������

��������� ��

������������������

"�1# ��/&����')�� ��

��������� !

"���$7���� �')�� ��"���$�%&')�� ��"� �� ��;� � ��')�� ��

Page 25: MKVS-.bung WS 2002/2003 -  … · MKVS-.bung WS 2002/2003 -  ... k ★

as I. Schmied, Verteilte Systeme, Universität Ulmbedarf in jedem Fall der Zustimmung des Autors B-20

(von 50)

MKV

S-Ü

bung

WS

2002

/200

3B

Jav

a Re

mot

e In

voca

tion

9.1 UnicastRemoteObject.exportObject (2)

��: <3��# ���

�� ����=���(��

���: <:���# ��

0�1# ��/&����'������)�� ��

���>���')"?�$�%&?)�� ���' &�)@0������(��)�� ��

0�����')�� ��

0�1# ��/&����'������)�� ��

Übung zur Vorlesung Moderne Konzepte Verteilter Systeme Copyright © 2002/2003 AndreMKVS-Uebung-B.fm (13 Nov 2002 15:18) Reproduktion oder Verwendung dieser Unterlagen

Spurskizze der Methodenaufrufe

������:�����

������(�� ��<� 1+

��� �����������$�����(��

���"����#

��������(�� ��/&����

0� �� ��;� � ��'�� �0���$�%&'��� ���� �� ��/

���

��')

0����������� �:�&��

0*��� %�$7���� ��#%�' &����� ��'))

� �������� ������� ������

0:�����'����(������/&���'))�� ��

0��$7���� �' &�)�� ��

0�%&�����$�%&' &�@0������(��)�� ��

, #�� ���-0���$7���� �' &�)�� ��

0�%&���1# ��/&����' &�)�� ��

0�%&���1# ��/&����'���)�� ��

Page 26: MKVS-.bung WS 2002/2003 -  … · MKVS-.bung WS 2002/2003 -  ... k ★

as I. Schmied, Verteilte Systeme, Universität Ulmbedarf in jedem Fall der Zustimmung des Autors B-21

(von 50)

MKV

S-Ü

bung

WS

2002

/200

3B

Jav

a Re

mot

e In

voca

tion

9.1 UnicastRemoteObject.exportObject (3)

emoteObject.ref)

ver.”+”UnicastServerRef”

tFactories

anz delegiert

��������������)���� ���� ������#

._Stub wird instantiiert)

ransport-Schicht)

Socket-Schnittstelle

reflect.Method-Objekte)

Übung zur Vorlesung Moderne Konzepte Verteilter Systeme Copyright © 2002/2003 AndreMKVS-Uebung-B.fm (13 Nov 2002 15:18) Reproduktion oder Verwendung dieser Unterlagen

● Referenzklasse aus refType erzeugen,● instantiieren und in ref-Attribut vermerken (R

✦ RemoteRef.packagePrefix+refType, z.B. ”sun.rmi.ser✦ Übergabe optionaler Parameter, z.B. Port, RMISocke

● Exportieren wird letztendlich an Referenz-Inst������*����������� �������������������)���� ��������� ������'����;.��������-������������(���*��������(������������

��

● RemoteProxy wird erzeugt (..._Skel und evtl. ..● Target und LiveRef wird erzeugt (Bindung an T

✦ bewirkt Generieren einer ObjectID und aktiviert die● Methodentabelle aufbauen (enthält java.lang.

Page 27: MKVS-.bung WS 2002/2003 -  … · MKVS-.bung WS 2002/2003 -  ... k ★

as I. Schmied, Verteilte Systeme, Universität Ulmbedarf in jedem Fall der Zustimmung des Autors B-22

(von 50)

MKV

S-Ü

bung

WS

2002

/200

3B

Jav

a Re

mot

e In

voca

tion

10 Stubs, Skeletons, ...Encapsulation in

1986, 6th ICDCS/IEEE)

Anfrage, Parametern und

Transparenz

nd internem Aufbau

h nach IIOP-Adaptierbarkeit

classname> → diff

ellen für beide Versionen

Übung zur Vorlesung Moderne Konzepte Verteilter Systeme Copyright © 2002/2003 AndreMKVS-Uebung-B.fm (13 Nov 2002 15:18) Reproduktion oder Verwendung dieser Unterlagen

● „Ur-Paper“ von Marc Shapiro: „Structure and

Distributed Systems: The Proxy Principle“ (Mai● Stubs (am Client) und Skeletons (am Server)

✦ abstrahieren das Marshalling und den Transport von

„Rückgabewert“ (oder Exception) → Realisieren von● Seit Java 1.2 einige Änderungen an Protokoll u

✦ bedingt durch erweiterte Reflection-API und Wunsc✦ wir beschränken uns auf die neuere Version

★ Vergleichen Sie selbst: rmic -keep [-v1.1|-v1.2|-vcompat] <★ -vcompat (Default-Einstellung) generiert Stub mit Schnittst

Page 28: MKVS-.bung WS 2002/2003 -  … · MKVS-.bung WS 2002/2003 -  ... k ★

as I. Schmied, Verteilte Systeme, Universität Ulmbedarf in jedem Fall der Zustimmung des Autors B-23

(von 50)

MKV

S-Ü

bung

WS

2002

/200

3B

Jav

a Re

mot

e In

voca

tion

10 Stubs, Skeletons, ... (2)ns zu Gunsten eines

ill ?

xy

������� ���� ��67���'����

������

����"�� �������������#�����#

Übung zur Vorlesung Moderne Konzepte Verteilter Systeme Copyright © 2002/2003 AndreMKVS-Uebung-B.fm (13 Nov 2002 15:18) Reproduktion oder Verwendung dieser Unterlagen

● neues Stub Protocol in Java 1.2 macht Skeleto

neuen generischen Dispatchers überflüssig.✦ was passiert wenn 1.1-Client mit 1.2-Server reden w✦ allgemein beachtenswerte API: java.lang.reflect.Pro

+�(����"�� ������� ��������-�+�(����"�� �������������� �����(&���� �����).���?�� ��������

��������).��������>�).�'�>�).��������A�������'������5� ��������-������67���A���#

�������������).������'�����������-������67���+�(

A������A������-+���������-��� ��67������ ��

Page 29: MKVS-.bung WS 2002/2003 -  … · MKVS-.bung WS 2002/2003 -  ... k ★

as I. Schmied, Verteilte Systeme, Universität Ulmbedarf in jedem Fall der Zustimmung des Autors B-24

(von 50)

MKV

S-Ü

bung

WS

2002

/200

3B

Jav

a Re

mot

e In

voca

tion

10.1 ..._Stub

����� �(������������

E#F#

����-� �(�����'������67����#����-� �(�����'������67����#

���������#��

EHJFJGJKIJLGE5�#

�� �����&� ��)�����0����#�

Übung zur Vorlesung Moderne Konzepte Verteilter Systeme Copyright © 2002/2003 AndreMKVS-Uebung-B.fm (13 Nov 2002 15:18) Reproduktion oder Verwendung dieser Unterlagen

���&�'���&(��������#��������������������+���=�����)�� �� �(���������(����������������������������������������������&(�������������������(����������������'�������B�����*+8���C#�������(�������� �(�����'��������?�� �D��� = 1=�������(�������� �(�����'��������?�� �D��� = �=������������������D��� = 1=E����&(���������1�������'�?�� �/ 10����D��� = �=F����&(�����������������'�?�� �/ �0

�������������������+���=���� �(���������(���������������������������������(� � 1�����-�� �(����������$)�������������.���������(&�������D��� = 1=E��������9CGHHIH������������� �(�����'�������$)�������������-��#������������� �(����������$)���������������-��#������������� �(�����'�$)���������������������-���-� �(������*��)���� $)������/�� �����������������22��������������� ��������������(� � ������-�� �(����+�$)������������

Page 30: MKVS-.bung WS 2002/2003 -  … · MKVS-.bung WS 2002/2003 -  ... k ★

as I. Schmied, Verteilte Systeme, Universität Ulmbedarf in jedem Fall der Zustimmung des Autors B-25

(von 50)

MKV

S-Ü

bung

WS

2002

/200

3B

Jav

a Re

mot

e In

voca

tion

10.2 ..._Stub: ref.invokeect[] params, long opnum)

(wg. RemoteCall)

der Methoden-Tabelle

Übung zur Vorlesung Moderne Konzepte Verteilter Systeme Copyright © 2002/2003 AndreMKVS-Uebung-B.fm (13 Nov 2002 15:18) Reproduktion oder Verwendung dieser Unterlagen

● UnicastRef.invoke (Remote obj, Method method, Obj● die anderen invoke-Methoden sind deprecated

● [externes Codelisting: UnicastRef.invoke]✦ Suchen des java.lang.reflect.Method-Metaobjekts in

Page 31: MKVS-.bung WS 2002/2003 -  … · MKVS-.bung WS 2002/2003 -  ... k ★

as I. Schmied, Verteilte Systeme, Universität Ulmbedarf in jedem Fall der Zustimmung des Autors B-26

(von 50)

MKV

S-Ü

bung

WS

2002

/200

3B

Jav

a Re

mot

e In

voca

tion

10.3 Skeleton einem anderen Beispiel)

�(����&������

KLJLKLK5#�22�",9F

������#

���#��

(���������������������'�$)�������

��/���������������������0�#

#

��

Übung zur Vorlesung Moderne Konzepte Verteilter Systeme Copyright © 2002/2003 AndreMKVS-Uebung-B.fm (13 Nov 2002 15:18) Reproduktion oder Verwendung dieser Unterlagen

(aus

�������������������;����+���=�&������������� �(��������

�����(����������������'���������"������FEJJGJKELHGL

�����(�������������� �(���������(����������67�����������-� �(���������(�����������/���������������0��������������� �(���������(����������67�'����������������������� �(���������(����������67��������������������������(� � ������� �(������������ �� �(�������������������������������������������'���������-�� �(��������������M����������"������������-���-� �(���������(����&����?������$)����

�����&(������;����+�������(�������&(������;����+������

�����-������������22�B���-��'��'���� �������������?��

���������

Page 32: MKVS-.bung WS 2002/2003 -  … · MKVS-.bung WS 2002/2003 -  ... k ★

as I. Schmied, Verteilte Systeme, Universität Ulmbedarf in jedem Fall der Zustimmung des Autors B-27

(von 50)

MKV

S-Ü

bung

WS

2002

/200

3B

Jav

a Re

mot

e In

voca

tion

10.3 Skeleton (2)

#

�����������'���'�����0����#

������#

�������'������0����#

(��� ���� �������0�#

Übung zur Vorlesung Moderne Konzepte Verteilter Systeme Copyright © 2002/2003 AndreMKVS-Uebung-B.fm (13 Nov 2002 15:18) Reproduktion oder Verwendung dieser Unterlagen

�����������E!���22������������������������������D�����=��=F#���������.������������ �(������ ��+��������������'�+��������������������D�����=��=F��������� +���#���������������� �(����+�$)�������������������������-���-� �(������*��������$)������/����������������������.������������������������+����������#��������������������D�����������(������������D�����=��=F�#���������.������������ �(������ ����������������'����������������������-���+��D������#���������������� �(����+�$)����������������������-���-� �(������?������$)������/�����������������������������&#���������22�����E������������ �����!���-���-� �(������*��������$)������/��

������22�-�������22� ��������22������

Page 33: MKVS-.bung WS 2002/2003 -  … · MKVS-.bung WS 2002/2003 -  ... k ★

as I. Schmied, Verteilte Systeme, Universität Ulmbedarf in jedem Fall der Zustimmung des Autors B-28

(von 50)

MKV

S-Ü

bung

WS

2002

/200

3B

Jav

a Re

mot

e In

voca

tion

10.4 ServerRef.dispatcht.Proxy

ch]

Übung zur Vorlesung Moderne Konzepte Verteilter Systeme Copyright © 2002/2003 AndreMKVS-Uebung-B.fm (13 Nov 2002 15:18) Reproduktion oder Verwendung dieser Unterlagen

● siehe auch: Dynamic Proxy mit java.lang.reflec

● [externes Codelisting: UnicastServerRef.dispat

Page 34: MKVS-.bung WS 2002/2003 -  … · MKVS-.bung WS 2002/2003 -  ... k ★

as I. Schmied, Verteilte Systeme, Universität Ulmbedarf in jedem Fall der Zustimmung des Autors B-29

(von 50)

MKV

S-Ü

bung

WS

2002

/200

3B

Jav

a Re

mot

e In

voca

tion

11 Registrierung am Namensdienst

f eine Remote-Referenz

e name schon benutzt wird

zt werden,

hende Bindung

Übung zur Vorlesung Moderne Konzepte Verteilter Systeme Copyright © 2002/2003 AndreMKVS-Uebung-B.fm (13 Nov 2002 15:18) Reproduktion oder Verwendung dieser Unterlagen

● Simpler Namensdienst „RMI-Registry“✦ bekommt über einen herkömmlichen Remote-Aufru✦ verknüpft die Referenz mit String als Suchschlüssel✦ flacher Namensraum

● bind(String name, Remote obj)✦ erzeugt AlreadyBoundException, falls der Objektnam✦ der Objektname kann durch eine Registry-URI ergän

z.B. rmi://host.running.registry:port/name✦ rebind(String name, Remote obj) überschreibt beste✦ unbind(String name)

● Remote lookup(String name)● String[ ] list(String registryLocation)

Page 35: MKVS-.bung WS 2002/2003 -  … · MKVS-.bung WS 2002/2003 -  ... k ★

as I. Schmied, Verteilte Systeme, Universität Ulmbedarf in jedem Fall der Zustimmung des Autors B-30

(von 50)

MKV

S-Ü

bung

WS

2002

/200

3B

Jav

a Re

mot

e In

voca

tion

11.1 Registryistry: „java.rmi.Naming“

ost:port/name“

ORT (:1099) verwendet

yImpl mit HashMap

emote

zen (Stubs)

ie dieses Stubs und nimmt darüber

rmiregistry Client

k k

k

Übung zur Vorlesung Moderne Konzepte Verteilter Systeme Copyright © 2002/2003 AndreMKVS-Uebung-B.fm (13 Nov 2002 15:18) Reproduktion oder Verwendung dieser Unterlagen

● Convenience Wrapper für java.rmi.registry.Reg✦ statische Methoden (re-/un-)bind, list, lookup✦ Zugriff auf Registries fremder Hosts mit URI „rmi://h

★ fehlt Host-/Port-Angabe wird localhost:Registry.REGISTRY_P✦ intern Delegation auf LocateRegistry, Registry

● SDK-Implementierung: sun.rmi.registry.Registr● Instanzen von java.rmi.registry.Registry sind R

✦ Lookup = Weitergabe serialisierter Remote-Referen★ Der Server bindet unter dem Schlüssel k

einen Servant an die Registry, d.h. ein seri-

alisierter Stub wird zur Registry übertragen

und dort in einer HashMap gehalten.★ Der Client bekommt beim Lookup von der Registry eine Kop

seinerseits die Kommunikation mit dem Server auf

Server

Page 36: MKVS-.bung WS 2002/2003 -  … · MKVS-.bung WS 2002/2003 -  ... k ★

as I. Schmied, Verteilte Systeme, Universität Ulmbedarf in jedem Fall der Zustimmung des Autors B-31

(von 50)

MKV

S-Ü

bung

WS

2002

/200

3B

Jav

a Re

mot

e In

voca

tion

11.1 Registry (2) VMs transportabel

ID:[0:0:0, 0]

ufenden Registry-Prozess

����������������'���.�M

���6���!�6�� 9

:+�;�<=>��;�#

�%��������/N��'N0�M��/N���#

Übung zur Vorlesung Moderne Konzepte Verteilter Systeme Copyright © 2002/2003 AndreMKVS-Uebung-B.fm (13 Nov 2002 15:18) Reproduktion oder Verwendung dieser Unterlagen

● Registry-Stubs sind nicht unbedingt zwischen✦ spezieller well-known Object Identifier benutzt: obj✦ LocateRegistry.getRegistry funktioniert hier! ohne la

22������ ���!��������'���.��������������'

��'���.�������5�����'���.�'���'���.��#�22�-�&�� ��.�������������/'���'���.!�/N����#

'���'���.!�����������'���.���'���.+���=���6��������!6FIJ�GE�)))�)))!FELL7�������� +8!6E!E!E��E7777

22�������9���������'���.��-

��'���.���'���5�����'���.��������'���.���'���.��$

��������'��%����������!�/��'���.���������������� ����

Page 37: MKVS-.bung WS 2002/2003 -  … · MKVS-.bung WS 2002/2003 -  ... k ★

as I. Schmied, Verteilte Systeme, Universität Ulmbedarf in jedem Fall der Zustimmung des Autors B-32

(von 50)

MKV

S-Ü

bung

WS

2002

/200

3B

Jav

a Re

mot

e In

voca

tion

11.1 Registry (3)

rtet, in dem sie per se keinen

it der Stubs) hat

n CLASSPATH erreichen

mi.server.codebase des Serv-

n die Clients weiter

den Laufzeitfehler der RMI-Runtime

Übung zur Vorlesung Moderne Konzepte Verteilter Systeme Copyright © 2002/2003 AndreMKVS-Uebung-B.fm (13 Nov 2002 15:18) Reproduktion oder Verwendung dieser Unterlagen

● Wichtiger Hinweis✦ Die Registry muss in einem Working Directory gesta

Zugriff auf die class-Dateien des Servants (und dam✦ Der Registry-Prozess darf die Stubs nicht über seine✦ Ansonsten ignoriert die Registry das Property java.r

ers und gibt evtl. keine entsprechende Annotation a★ Damit können die Clients keine Stubs nachladen und es wer

erzeugt !

Page 38: MKVS-.bung WS 2002/2003 -  … · MKVS-.bung WS 2002/2003 -  ... k ★

as I. Schmied, Verteilte Systeme, Universität Ulmbedarf in jedem Fall der Zustimmung des Autors B-33

(von 50)

MKV

S-Ü

bung

WS

2002

/200

3B

Jav

a Re

mot

e In

voca

tion

12 RMI Transport-Mechanismen z.B.

ax.rmi)

wie .NET

Übung zur Vorlesung Moderne Konzepte Verteilter Systeme Copyright © 2002/2003 AndreMKVS-Uebung-B.fm (13 Nov 2002 15:18) Reproduktion oder Verwendung dieser Unterlagen

● prinzipiell sind diverse Protokolle verwendbar,✦ JRMP (Sun: Java Remote Method Protocol)✦ RMI over HTTP-POST (variable port, port 80)✦ IIOP (OMG: CORBA Internet Inter ORB Protocol, jav✦ soweit abbildbar: Bridges zu anderen Architekturen

● zunächst betrachten wir pure-RMI✦ RMI-IIOP evtl. in späterer Übung

Page 39: MKVS-.bung WS 2002/2003 -  … · MKVS-.bung WS 2002/2003 -  ... k ★

as I. Schmied, Verteilte Systeme, Universität Ulmbedarf in jedem Fall der Zustimmung des Autors B-34

(von 50)

MKV

S-Ü

bung

WS

2002

/200

3B

Jav

a Re

mot

e In

voca

tion

12.1 Java Serializationhen

on (Deserialisierung)

Marker Interface

eException erzeugt

rch back-references

t großem Objektgraph

e back-references (Dubletten)

tream in derselben VM)

ischen VMs

Default Constructor

Datenstrom rekonstruierbaren

Dynamic Class Loading)

Übung zur Vorlesung Moderne Konzepte Verteilter Systeme Copyright © 2002/2003 AndreMKVS-Uebung-B.fm (13 Nov 2002 15:18) Reproduktion oder Verwendung dieser Unterlagen

● Transformation von Primitiven und Objektgrap

in einen Datenstrom und spätere Rekonstrukti✦ serialisierbare Klassen tragen java.io.Serializable als ✦ sonst wird bei der Serialisierung eine NotSerializabl✦ Referential Integrity innerhalb einer Verbindung du

★ OutOfMemoryError bei langanhaltender Kommunikation mi★ read/writeUnshared() erlauben mehrfaches Serialisieren ohn

✦ by-copy Semantik (selbst wenn Input- und OutputS✦ interne Versionierung zur Kompatibilitätsprüfung zw✦ erste nicht-serialisierbare Superklasse braucht einen

★ Deserialisierer erzeugt Default-Objekte für die nicht aus dem

Superklassen-Objektteile (sonst Runtime-Fehler !)✦ Annotation der CODEBASE am Class-Descriptor (für

Page 40: MKVS-.bung WS 2002/2003 -  … · MKVS-.bung WS 2002/2003 -  ... k ★

as I. Schmied, Verteilte Systeme, Universität Ulmbedarf in jedem Fall der Zustimmung des Autors B-35

(von 50)

MKV

S-Ü

bung

WS

2002

/200

3B

Jav

a Re

mot

e In

voca

tion

12.1 Java Serialization (2)

out) throws IOException;

n)

ion, ClassNotFoundException;

erden sollen

bjekts

jectStreamException;

jectStreamException;

Übung zur Vorlesung Moderne Konzepte Verteilter Systeme Copyright © 2002/2003 AndreMKVS-Uebung-B.fm (13 Nov 2002 15:18) Reproduktion oder Verwendung dieser Unterlagen

● Custom Marshalling für Serializable Objekte✦ private void writeObject(java.io.ObjectOutputStream✦ private void readObject(java.io.ObjectInputStream i

throws IOExcept● Rückgriff auf die Default-Serialisierung

✦ out.defaultWriteObject();✦ in.defaultReadObject();✦ z.B. nutzbar, wenn zusätzliche Daten geschreiben w

● Vollständiges Ersetzen des Ausgabe/Eingabe-O✦ ANY-ACCESS-MODIFIER Object writeReplace() throws Ob✦ ANY-ACCESS-MODIFIER Object readResolve() throws Ob

Page 41: MKVS-.bung WS 2002/2003 -  … · MKVS-.bung WS 2002/2003 -  ... k ★

as I. Schmied, Verteilte Systeme, Universität Ulmbedarf in jedem Fall der Zustimmung des Autors B-36

(von 50)

MKV

S-Ü

bung

WS

2002

/200

3B

Jav

a Re

mot

e In

voca

tion

12.1 Java Serialization (3)

verwaltet

s

n gegeben wird

kstelligen

erializable-Interface

Übung zur Vorlesung Moderne Konzepte Verteilter Systeme Copyright © 2002/2003 AndreMKVS-Uebung-B.fm (13 Nov 2002 15:18) Reproduktion oder Verwendung dieser Unterlagen

● Das Interface Externalizable✦ nur Identitt der Klasse des Objekts wird automatisch✦ komplett eigene Implementierung des Datenformat

★ public void writeExternal(ObjectOutput stream)★ public void readExternal(ObjectInput stream)★ Sicherheitskritisch, da wegen public Zugriff auf interne Date

✦ Serialisierung des Supertyps muss man selber bewer✦ es wird ein public non-arg Constructor gebraucht✦ dominiert über bestehende write/readObject() des S✦ writeReplace(), readResolve() wie bei Serializable

Page 42: MKVS-.bung WS 2002/2003 -  … · MKVS-.bung WS 2002/2003 -  ... k ★

as I. Schmied, Verteilte Systeme, Universität Ulmbedarf in jedem Fall der Zustimmung des Autors B-37

(von 50)

MKV

S-Ü

bung

WS

2002

/200

3B

Jav

a Re

mot

e In

voca

tion

12.1 Java Serialization (4)

rzeugt werden

ene Prüfungen zur Abwärt-

ctStreamField[])

ierung einbezogen werden

bergeben

Übung zur Vorlesung Moderne Konzepte Verteilter Systeme Copyright © 2002/2003 AndreMKVS-Uebung-B.fm (13 Nov 2002 15:18) Reproduktion oder Verwendung dieser Unterlagen

● serialVersionUID✦ Signatur-Hash, kann mit dem Programm serialver e✦ Custom-Marshalling muss so angelegt sein, dass eig

skompatibilität möglich bleiben● transient / serialPersistentFields-Attribut (Obje

✦ bewahrt vor / wählt Attribute zur Serialisierung● non-static inner classes

✦ nicht Externalizable und sollten nicht in die Serialis✦ outer class wird automatisch mitserialisiert✦ kein non-arg Constructor möglich

★ ein Parameter (das outer class Objekt) wird implizit immer ü

Page 43: MKVS-.bung WS 2002/2003 -  … · MKVS-.bung WS 2002/2003 -  ... k ★

as I. Schmied, Verteilte Systeme, Universität Ulmbedarf in jedem Fall der Zustimmung des Autors B-38

(von 50)

MKV

S-Ü

bung

WS

2002

/200

3B

Jav

a Re

mot

e In

voca

tion

12.2 RMI Serializations zum Transport

putStream

.1)

aus

bs (falls exportiert !)

������-��+�$)�������������������������� ���#�#

-��+�$)���������������F��#

Übung zur Vorlesung Moderne Konzepte Verteilter Systeme Copyright © 2002/2003 AndreMKVS-Uebung-B.fm (13 Nov 2002 15:18) Reproduktion oder Verwendung dieser Unterlagen

● RMI verwendet die Java Serialisierung als Basi● RMI verwendet Subclass von java.io.ObjectOut

✦ annotateClass, resolveClass (RMI-Specification 10.3★ fügt CODEBASE in den RMI-Datensstrom ein, bzw. liest diese★ sun.rmi.server.MarshalOutput/InputStream

✦ replaceObject ersetzt exportierte Objekte durch Stu������?�������������������������

����� ��������� ������������ ����� ���� ����M� �����������������OO�M� ������;��'����'������ ��;�����'�;��'������������'��M�����������������'��'������

��������� ���#

������ �(� �����������������������F����-���5������?+�����5� ���'������,���������#

� �

Page 44: MKVS-.bung WS 2002/2003 -  … · MKVS-.bung WS 2002/2003 -  ... k ★

as I. Schmied, Verteilte Systeme, Universität Ulmbedarf in jedem Fall der Zustimmung des Autors B-39

(von 50)

MKV

S-Ü

bung

WS

2002

/200

3B

Jav

a Re

mot

e In

voca

tion

13 RMI ClassLoader

übertragen (v.a. bei by-Copy)

st

usch zu schützen

tion

Übung zur Vorlesung Moderne Konzepte Verteilter Systeme Copyright © 2002/2003 AndreMKVS-Uebung-B.fm (13 Nov 2002 15:18) Reproduktion oder Verwendung dieser Unterlagen

● Anwendungen✦ Polymorphie: Ableitung eines erwarteten Typs wird ✦ Dynamic Interfaces✦ Custom Sockets✦ ...

● zunächst wird über SystemClassLoader aufgelö✦ Sicherheitsmaßnahme um z.B. java.lang... vor Austa

● java.rmi.server.RMIClassLoader.loadClass● java.rmi.server.RMIClassLoader.getClassAnnota

✦ CODEBASE wurde im RMI-Datenstrom übertragen

Page 45: MKVS-.bung WS 2002/2003 -  … · MKVS-.bung WS 2002/2003 -  ... k ★

as I. Schmied, Verteilte Systeme, Universität Ulmbedarf in jedem Fall der Zustimmung des Autors B-40

(von 50)

MKV

S-Ü

bung

WS

2002

/200

3B

Jav

a Re

mot

e In

voca

tion

14 Distributed Garbage CollectionM

Server geschickt

der RMI-Runtime eine

henden Remote-Referenzen

rch Center TR 115“

Übung zur Vorlesung Moderne Konzepte Verteilter Systeme Copyright © 2002/2003 AndreMKVS-Uebung-B.fm (13 Nov 2002 15:18) Reproduktion oder Verwendung dieser Unterlagen

● live references verwalten Referenzzähler pro V✦ class sun.rmi.transport.LiveRef enthält Zähler✦ Referenced/Unreferenced-Nachrichten werden zum

● interface java.rmi.server.Unreferenced✦ kann von Servant implementiert werden, wenn von

Benachrichtigung erfolgen soll, sobald keine ausste

mehr erkennbar sind● was passiert bei Netzwerk-Partitionierung ?● Literatur

✦ RMI-Specification: Seite 16f, ...✦ Literatur: Birrel, Nelson, Owicki: „DEC Systems Resea

Page 46: MKVS-.bung WS 2002/2003 -  … · MKVS-.bung WS 2002/2003 -  ... k ★

as I. Schmied, Verteilte Systeme, Universität Ulmbedarf in jedem Fall der Zustimmung des Autors B-41

(von 50)

MKV

S-Ü

bung

WS

2002

/200

3B

Jav

a Re

mot

e In

voca

tion

15 RMI Custom-Sockets

f2)

tFactory-Daten

SE

-Sockets auf

Übung zur Vorlesung Moderne Konzepte Verteilter Systeme Copyright © 2002/2003 AndreMKVS-Uebung-B.fm (13 Nov 2002 15:18) Reproduktion oder Verwendung dieser Unterlagen

● java.rmi.server.RMISocketFactory✦ .getDefaultSocketFactory(), .create(Server)Socket()✦ Socket-Information wird in Stream mitverpackt

★ spezielle RemoteRef-Implementierung (z.B. UnicastServerRe

● kann bei export zusätzlich angegeben werden● RMI-Runtime-Unterstützung am Client

✦ extrahiert vor der Server-Kommunikation die Socke✦ lädt ggf. Socket-Implementierungscode via CODEBA✦ baut Kommunikationsstrecke zum Server via Custom

Page 47: MKVS-.bung WS 2002/2003 -  … · MKVS-.bung WS 2002/2003 -  ... k ★

as I. Schmied, Verteilte Systeme, Universität Ulmbedarf in jedem Fall der Zustimmung des Autors B-42

(von 50)

MKV

S-Ü

bung

WS

2002

/200

3B

Jav

a Re

mot

e In

voca

tion

16 RMI und Firewalls

server:80“

n

Übung zur Vorlesung Moderne Konzepte Verteilter Systeme Copyright © 2002/2003 AndreMKVS-Uebung-B.fm (13 Nov 2002 15:18) Reproduktion oder Verwendung dieser Unterlagen

● RMI over HTTP-POST● Port Redirection via CGI-Script an „http://web● Hostname nicht als Host-IP address verwende

Page 48: MKVS-.bung WS 2002/2003 -  … · MKVS-.bung WS 2002/2003 -  ... k ★

as I. Schmied, Verteilte Systeme, Universität Ulmbedarf in jedem Fall der Zustimmung des Autors B-43

(von 50)

MKV

S-Ü

bung

WS

2002

/200

3B

Jav

a Re

mot

e In

voca

tion

17 RMI Wire ProtocolT

cks

n bestehenden TCP-Kanal

em Applet exportiert werden,

st

Übung zur Vorlesung Moderne Konzepte Verteilter Systeme Copyright © 2002/2003 AndreMKVS-Uebung-B.fm (13 Nov 2002 15:18) Reproduktion oder Verwendung dieser Unterlagen

● nutzt Java Object Serialization und HTTP-POS● Sniffed Beispiel, Firewalls, Multiplexing, DGCA● RMI Multiplexing Protocol

✦ virtuelle bidirektionale Verbindungen, z.B. über eine✦ nutzbar für Callbacks zu RemoteObjects, die von ein

der SecurityManager aber keine ServerSockets zuläs

Page 49: MKVS-.bung WS 2002/2003 -  … · MKVS-.bung WS 2002/2003 -  ... k ★

as I. Schmied, Verteilte Systeme, Universität Ulmbedarf in jedem Fall der Zustimmung des Autors B-44

(von 50)

MKV

S-Ü

bung

WS

2002

/200

3B

Jav

a Re

mot

e In

voca

tion

18 Aufgabease

beendet wird)

TopicNode

MemoNode

Link

Übung zur Vorlesung Moderne Konzepte Verteilter Systeme Copyright © 2002/2003 AndreMKVS-Uebung-B.fm (13 Nov 2002 15:18) Reproduktion oder Verwendung dieser Unterlagen

● Entwickeln Sie eine Client/Server-KnowledgeB✦ RMI-Server (hält transiente Daten solange er nicht ✦ RMI-Client (Text-UI ähnlich einer Unix-Shell)

● Bäume von Node-Objekten✦ TopicNodes

★ Hauptbaum mit initialem Wurzelknoten✦ MemoNodes

★ Nebenbaum mit Memos jeweils pro TopicNode✦ Links

★ Hyperlinks beliebig zwischen Memo- und TopicNodes

Page 50: MKVS-.bung WS 2002/2003 -  … · MKVS-.bung WS 2002/2003 -  ... k ★

as I. Schmied, Verteilte Systeme, Universität Ulmbedarf in jedem Fall der Zustimmung des Autors B-45

(von 50)

MKV

S-Ü

bung

WS

2002

/200

3B

Jav

a Re

mot

e In

voca

tion

18.1 Aufgabe: UML-Modell

���A

%&���

&������

��� *

���A

�������

! !

���������� �$���

88�1��#�� �99%���%��&���

��

���������# !�$����� �

�'��� ��������! ���� �������� �� ��� �������� %������� ������� �� %��������� �(��������� �� � ���������$�% �������! ���������(����

88#�%� 99���������# !�$%

"��������

Übung zur Vorlesung Moderne Konzepte Verteilter Systeme Copyright © 2002/2003 AndreMKVS-Uebung-B.fm (13 Nov 2002 15:18) Reproduktion oder Verwendung dieser Unterlagen

!

!

�����.##������ �

� �: #��

� ��

���A

���

� ��

���A

%&: #��

&������

���A

���7

���

���A ���A

&����

�����������

�� �� ��������� �� ������� ����� �������� ��������� ����� �������� ������ ��� ������ ��

���������� ��

�� ������������ �� ������� �� ��������� �� ��������� ����������������� ��� ������ ��

88������+���������� �99���������

�� ��!"�����

�� � ���������������� ���� ����! ������� �� ������ ����! "#

���������# !�

"�����$�������%��

�� ���� �������� ���� �$�% ���� ������� �� ������� �&��'������ �� ������!�%�����(����)���� ���� ���� ����� �&�� �������� �� ��� �������*�!�%�����(���������

�������������������

��*����� ������ �� �������*��*����� ������ �� �������*��*����� �!!����������+,��� �� ��������

�����������������

���� �'��� ������� ��������� ��� ������� )��� ������ ��������� ��� �������� ��)��� ������ �����

Page 51: MKVS-.bung WS 2002/2003 -  … · MKVS-.bung WS 2002/2003 -  ... k ★

as I. Schmied, Verteilte Systeme, Universität Ulmbedarf in jedem Fall der Zustimmung des Autors B-46

(von 50)

MKV

S-Ü

bung

WS

2002

/200

3B

Jav

a Re

mot

e In

voca

tion

18.2 Aufgabe: Beispiel-Session

/

/2/1

/1-1

/1-1/1 /1-1/2 =

foo

bla

L

/1-1/todo

x

2D�� �R52F9F2 D����������2F9F2 D�� �2

����������������������� ������������������������������

����'� !2F9F2

2D�=

Übung zur Vorlesung Moderne Konzepte Verteilter Systeme Copyright © 2002/2003 AndreMKVS-Uebung-B.fm (13 Nov 2002 15:18) Reproduktion oder Verwendung dieser Unterlagen

2D��&���2D��&���2D���

22F2C

2D�� �F2FD��&���2FD���

229F

2FD�� �9F2F9FD����P�Q2F9FD��&���2F9FD��&���2F9FD���

9F�P�Q9F2F9F2C

2F9FD�� �C2F9F2CD������ 2F9F2 D����P���Q2F9F2 D�'�

P���Q

2F9F2 D�� �22F9FD����F2F9FD���

9F�P�Q9F2 �P���Q

2F9FD�� �22D����

22F2F9F�P�Q2F9F2 �P���Q2C

2D����&�5R2F9F2 2D����

22�5R2F9F2 2F2F9F�P�Q2F9F2 �P���Q2C

Page 52: MKVS-.bung WS 2002/2003 -  … · MKVS-.bung WS 2002/2003 -  ... k ★

as I. Schmied, Verteilte Systeme, Universität Ulmbedarf in jedem Fall der Zustimmung des Autors B-47

(von 50)

MKV

S-Ü

bung

WS

2002

/200

3B

Jav

a Re

mot

e In

voca

tion

18.2 Aufgabe: Beispiel-Session (2)

t auf Memo

Memo-Knoten

NodeID-Lücke)

ngetastet

den Typs an, tree rekursiv

hne relative Pfade)

c)

. zum RootTopic

-Bereich in Topic-Bereich)

e NodeID bleibt erhalten)

en Zielknoten (LinkTag@Ziel)

Übung zur Vorlesung Moderne Konzepte Verteilter Systeme Copyright © 2002/2003 AndreMKVS-Uebung-B.fm (13 Nov 2002 15:18) Reproduktion oder Verwendung dieser Unterlagen

● Kommandos✦ mktopic erzeugt einen Topic-Knoten, falls nich✦ mkmemo erzeugt auf Topic/Memo einen neuen✦ rm löscht einen Knoten (es entsteht eine

★ rm @tag löscht einen Link und lässt den Zielknoten una✦ ls, tree zeigt den aktuellen und Subknoten je✦ set/get setzt Content, falls auf Memo✦ cd <Name/ID> wechselt in Subknoten (einschrittig, o

★ Präfixe @LinkTag, -Memo (Memo erster Stufe am Topi

cd / springt zur RootMemo des aktuellen Topics bzw

cd .. geht zum Elternknoten zurück (evtl. aus Memo✦ name benennt einen Knoten (die numerisch✦ link erzeugt einen benannten Link auf ein

Page 53: MKVS-.bung WS 2002/2003 -  … · MKVS-.bung WS 2002/2003 -  ... k ★

as I. Schmied, Verteilte Systeme, Universität Ulmbedarf in jedem Fall der Zustimmung des Autors B-48

(von 50)

MKV

S-Ü

bung

WS

2002

/200

3B

Jav

a Re

mot

e In

voca

tion

18.3 Aufgabe: Ausblick

es

Übung zur Vorlesung Moderne Konzepte Verteilter Systeme Copyright © 2002/2003 AndreMKVS-Uebung-B.fm (13 Nov 2002 15:18) Reproduktion oder Verwendung dieser Unterlagen

● Chat-Server (4-dimensional)✦ Topic ist Chat-Room (2-dim Hierarchie)✦ Memos sind Message-Threads (2-dim Hierarchie)✦ Update der Anzeige via Observer-Pattern

● Swing-Oberfläche● Future

✦ On-Demand-(De)Aktivierung, J2EE-Highlevel Servic✦ Redesign und Vergleich mit CORBA✦ MKVS/Services: Webservice + Frontend✦ MKVS/QoS

★ fragmentierte Datenbasis, intelligente Verteilung, ...

Page 54: MKVS-.bung WS 2002/2003 -  … · MKVS-.bung WS 2002/2003 -  ... k ★

as I. Schmied, Verteilte Systeme, Universität Ulmbedarf in jedem Fall der Zustimmung des Autors B-49

(von 50)

MKV

S-Ü

bung

WS

2002

/200

3B

Jav

a Re

mot

e In

voca

tion

18.4 Aufgabe: Lösungsskizze

i.kbase.st42

ase.Node

Übung zur Vorlesung Moderne Konzepte Verteilter Systeme Copyright © 2002/2003 AndreMKVS-Uebung-B.fm (13 Nov 2002 15:18) Reproduktion oder Verwendung dieser Unterlagen

● Konventionen✦ Package: mkvs.rmi.kbase.<studilogin>, z.B. mkvs.rm✦ Java Coding Conventions, inline-Javadoc✦ Implementierungsklassen haben Suffix „Impl“

★ class mkvs.rmi.kbase.st42.NodeImpl implements mkvs.rmi.kb

● Vorgaben✦ UML-Modell✦ zu instrumentierende Non-Remote Interfaces✦ Teil-Implementierung: Client, NodeIterator

Page 55: MKVS-.bung WS 2002/2003 -  … · MKVS-.bung WS 2002/2003 -  ... k ★

as I. Schmied, Verteilte Systeme, Universität Ulmbedarf in jedem Fall der Zustimmung des Autors B-50

(von 50)

MKV

S-Ü

bung

WS

2002

/200

3B

Jav

a Re

mot

e In

voca

tion

18.5 Aufgabe: offene Fragent verwendet werden ?

rvants) ?!

nn ein anderer

löscht ?

cher ?

Modifikation

Übung zur Vorlesung Moderne Konzepte Verteilter Systeme Copyright © 2002/2003 AndreMKVS-Uebung-B.fm (13 Nov 2002 15:18) Reproduktion oder Verwendung dieser Unterlagen

● warum kann java.util.Iterator/Observable nich● wo muss koordiniert werden (multithreaded se

✦ was passiert mit dem NodeIterator eines Clients, we

zeitgleich am selben Knoten modifiziert oder sogar ● Skalierbarkeit

✦ alle Knoten Remote ?✦ alle Knoten immer exportiert ?✦ alle Knoten immer aktiv und immer im präsent Spei

● NodeIterator by-Reference oder by-Copy✦ abhängig von Arbeitsgang: nur Iteration oder auch ✦ Wie kann man Kohärenz erhalten