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

Post on 18-Sep-2018

227 views 0 download

Transcript of 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

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 schmied@informatik.uni-ulm.de

Michael Kirstein (Studentische Hilfskraft)

Email mkirstein@gmx.de

● Zeitpunkt

nach Bedarf am Donnerstag ab 10 bzw. 16 Uh

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 ?

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

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

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

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

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

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

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

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

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

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 ?

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

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

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(�� ��(

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

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�#������

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

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>�������������������� ���

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

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

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

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���� �')�� ��"���$�%&')�� ��"� �� ��;� � ��')�� ��

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# ��/&����'���)�� ��

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.

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

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������ ��

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��������������� ��������������(� � ������-�� �(����+�$)������������

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

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���-��'��'���� �������������?��

���������

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������

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

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)

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

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�����'���.��������'���.���'���.��$

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

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 !

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

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

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

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

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 ü

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� ���'������,���������#

� �

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

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

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

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

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

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

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���������

�� ��!"�����

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

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

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

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

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

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

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

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

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

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

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

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

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