MKVS-.bung WS 2002/2003 - … · MKVS-.bung WS 2002/2003 - ... k ★
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 [email protected]
Michael Kirstein (Studentische Hilfskraft)
Email [email protected]
● 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