Transcript
Page 1: C Java RMI - fileverteilte Java Objekte / RMI-Objekte implementieren spezielle Java-Interfaces genauer: mindestens ein Java-Interface, das direkt oder indirekt von java.rmi.Remote

2002-2005, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005w-AvO-C-RMI.fm, 2005-10-14 11.08] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/

C Java RMI

C.1

2002-2005, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005w-AvO-C-RMI.fm, 2005-10-14 11.08] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/

1 Java

■ Objektorientierte Sprache

◆ Objekte

• und andere Datentypen: int, float, boolean, etc.

◆ Objektreferenzen

• Verweise auf Objekte

• keine Zeiger, Adressen o.ä.

◆ Methodenaufruf

• bei vorhandener Objektreferenz

• Übergabe von Parametern

• Rückgabe eines Ergebnisses

◆ statische Methoden (static)

• sind an Klasse gebunden nicht an Objekte

• Aufruf über Klassennamen

C.2

Page 2: C Java RMI - fileverteilte Java Objekte / RMI-Objekte implementieren spezielle Java-Interfaces genauer: mindestens ein Java-Interface, das direkt oder indirekt von java.rmi.Remote

2002-2005, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005w-AvO-C-RMI.fm, 2005-10-14 11.08] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/

1 Java (2)

■ Objektorientierte Sprache (fortges.)

◆ Semantik der Parameterübergabe

• Call-By-Object-Reference für Objekte

• Call-By-Value für andere Datentypen (z.B. Integer-Typ)

ObjektAufruf

übergebene ReferenzInstanzvariable

ObjektAufruf

übergebener WertInstanzvariable42

42

C.3

2002-2005, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005w-AvO-C-RMI.fm, 2005-10-14 11.08] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/

1 Java (3)

■ Objektorientierte Sprache (fortges.)

◆ einfache Vererbung (extends)

• maximal eine Basisklasse

◆ mehrfache Interface-Vererbung (implements)

• lediglich Schnittstelle jedoch keine Implementierung wird geerbt

• Interfaces enthalten nur Methoden oder Konstanten keine Attribute/Instanzvariablen

■ Exception-Handling

◆ teilweise obligatorische Deklaration bei Methoden

C.4

Page 3: C Java RMI - fileverteilte Java Objekte / RMI-Objekte implementieren spezielle Java-Interfaces genauer: mindestens ein Java-Interface, das direkt oder indirekt von java.rmi.Remote

2002-2005, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005w-AvO-C-RMI.fm, 2005-10-14 11.08] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/

1 Java (4)

■ Hierarchische Benennung von Interfaces und Klassen

◆ Paketname + Klassenname (Package)

• z.B. java.lang.Object

◆ weltweite eindeutige Benennung durch Anlehnung des Paketnamens an Domainname

• z.B. org.aspectix.orb.Orb (angelehnt an aspectix.org)

■ Compilierung auf Klassenebene (Class File)

◆ übersetzt in interpretierten Byte-Code

■ Dynamisches Laden von Klassen

◆ ClassLoader kann Klassen von beliebigen Quellen laden

■ Threads als Sprachkonzept

• verfügbar als spezielle Objekte

C.5

2002-2005, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005w-AvO-C-RMI.fm, 2005-10-14 11.08] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/

1 Java (5)

■ Sicherheitsmechanismen

◆ Byte-Code-Verifier

• Ausführung des Byte-Codes erhält Semantik der Sprache– z.B. kein Zugriff auf nicht-öffentliche Instanzvariablen

anderer Objekte möglich

◆ Sandboxing

• Klassen eines neuen ClassLoaders werden von einem SecurityManager kontrolliert

• versagt oder gewährt— Zugriff auf Dateien— Zugriff auf Netzwerkverbindungen— etc.

C.6

Page 4: C Java RMI - fileverteilte Java Objekte / RMI-Objekte implementieren spezielle Java-Interfaces genauer: mindestens ein Java-Interface, das direkt oder indirekt von java.rmi.Remote

2002-2005, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005w-AvO-C-RMI.fm, 2005-10-14 11.08] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/

1 Java (6)

■ JVM, Java Virtual Machine

◆ Interpreter für Java Class-Files (JIT-Compiler)

◆ Ausführungsumgebung für Java Programme bzw. Klassen

◆ mehrere ClassLoader möglich

C.7

2002-2005, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005w-AvO-C-RMI.fm, 2005-10-14 11.08] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/

2 Java RMI Grundlagen

■ Java Remote Method Invocation

◆ Erweiterung des Java Programmiermodells für Verteilung

◆ mehrere JVMs spannen eine verteilte Rechenplattform auf

■ Verteilungseinheiten

◆ Java Objekte

■ Verteilungstransparenz

◆ orts- und zugriffstransparente Methodenaufrufean verteilten Java Objekten

C.8

Page 5: C Java RMI - fileverteilte Java Objekte / RMI-Objekte implementieren spezielle Java-Interfaces genauer: mindestens ein Java-Interface, das direkt oder indirekt von java.rmi.Remote

2002-2005, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005w-AvO-C-RMI.fm, 2005-10-14 11.08] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/

2.1 Verteilte Java Objekte

■ Schnittstelle

◆ verteilte Java Objekte / RMI-Objekte implementierenspezielle Java-Interfaces

◆ genauer: mindestens ein Java-Interface, das direkt oder indirekt von java.rmi.Remote erbt

◆ dient als Marker, enthält keine Methoden

◆ alle Methoden in von java.rmi.Remote erbenden Interfaces müssen die Exception java.rmi.RemoteException deklarieren

• zeigt Fehler bei entfernten Aufrufen an– in der Regel At-Most-Once-Semantik

• es kann auch eine Basisklasse deklariert werden, z.B.java.io.IOException oder java.lang.Exception

C.9

2002-2005, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005w-AvO-C-RMI.fm, 2005-10-14 11.08] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/

2.1 Verteilte Java Objekte (2)

■ Beispiel

package avo;

public interface Printer implements java.rmi.Remote {public void print( String s )

throws java.rmi.RemoteException;}

C.10

Page 6: C Java RMI - fileverteilte Java Objekte / RMI-Objekte implementieren spezielle Java-Interfaces genauer: mindestens ein Java-Interface, das direkt oder indirekt von java.rmi.Remote

2002-2005, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005w-AvO-C-RMI.fm, 2005-10-14 11.08] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/

2.1 Verteilte Java Objekte (2)

■ Entfernt ansprechbare Methoden

◆ entfernt sind nur die Methoden aus Interfaces ansprechbar, die von Remote erben

◆ andere Methoden und Instanzvariablen sind nur lokal ansprechbar

■ Referenzen

◆ Referenzen nur mit dem Namen eines Remote-Interfaces typisieren

◆ nicht mit dem Klassennamen der Implementierung

◆ Beispiel:

avo.Printer p;... try {

p.print( “Testdruck” );}catch( java.rmi.RemoteException e) {

... }

C.11

2002-2005, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005w-AvO-C-RMI.fm, 2005-10-14 11.08] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/

2.2 Erzeugen eines RMI-Objekts

■ Übliches Vorgehen

◆ Implementierungsklasse erbt/implementiert mind. ein Remote-Interface

◆ Implementierungsklasse erbt von java.rmi.server.UnicastRemoteObject

• bereitet Objektinstanz für entfernte Aufrufe: exportiert Objekt

■ Alternative

◆ Implementierungsklasse erbt/implementiert mind. ein Remote-Interface

◆ manuelles Vorbereiten für entfernte Aufrufe:

• Aufruf vonjava.rmi.server.UnicastRemoteObject.exportObject( obj, ... )

C.12

Page 7: C Java RMI - fileverteilte Java Objekte / RMI-Objekte implementieren spezielle Java-Interfaces genauer: mindestens ein Java-Interface, das direkt oder indirekt von java.rmi.Remote

2002-2005, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005w-AvO-C-RMI.fm, 2005-10-14 11.08] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/

2.3 Erzeugen eines RMI-Objekts (2)

■ Beispiel

package avo;

public class MyPrinter extends java.rmi.UnicastRemoteObjectimplements avo.Printer {

... public void print( String s )

throws java.rmi.RemoteExeception {...

} ...

}

C.13

2002-2005, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005w-AvO-C-RMI.fm, 2005-10-14 11.08] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/

2.3 Erzeugen eines RMI-Objekts (3)

■ RMI Compiler

◆ erzeugt Stubklasse für Clientseite

• nur bis Java 1.4 notwendig

• ab Java 1.5 (Java 2 Version 5) generische Stubs

◆ erzeugt Skeletonklasse für Serverseite

• nur bis Java 1.1 notwendig

• ab Java 1.2 generische Skeletons

◆ Kommando rmic

• z.B. für avo.MyPrinter wird Stubklasse avo.MyPrinter_Stuberzeugt

C.14

Page 8: C Java RMI - fileverteilte Java Objekte / RMI-Objekte implementieren spezielle Java-Interfaces genauer: mindestens ein Java-Interface, das direkt oder indirekt von java.rmi.Remote

2002-2005, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005w-AvO-C-RMI.fm, 2005-10-14 11.08] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/

2.3 Erzeugen eines RMI-Objekts (4)

■ Stubklasse implementiert alle Remote-Interfaces der ursprünglichen Objektklasse

◆ Compiler erkennt Remote-Interfaces an Marker-Interface java.rmi.Remote

■ Objekte der Stubklasse

◆ werden als Stellvertreter auf Clientseite benutzt

◆ Client hat Java Objektreferenz auf Stubobjekt

• statt auf lokales Objekt

Client RMI-ObjektStubobjekt Skeleton

C.15

2002-2005, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005w-AvO-C-RMI.fm, 2005-10-14 11.08] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/

2.3 Erzeugen eines RMI-Objekts (5)

■ Beispiel für das Erzeugen des Objekts im Java-Code

◆ Objekt wurde durch Basisklasse automatisch exportiert

• sofort von außen (entfernt) ansprechbar

◆ lokaler Aufruf wie bisher

◆ entfernter Aufruf (?)

• Referenz auf RMI-Objekt notwendig

... avo.Printer p = new avo.MyPrinter();// Erzeugung des Objekts...

C.16

Page 9: C Java RMI - fileverteilte Java Objekte / RMI-Objekte implementieren spezielle Java-Interfaces genauer: mindestens ein Java-Interface, das direkt oder indirekt von java.rmi.Remote

2002-2005, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005w-AvO-C-RMI.fm, 2005-10-14 11.08] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/

2.4 Finden initialer Referenzen

■ Namensdienst zum Registrieren von Objekten

◆ Klasse java.rmi.registry.LocateRegistry

• erlaubt das Erzeugen einer Namensdienst-Instanz

• erlaubt das Erzeugen einer Objektreferenz zu einer (entfernten) Namensdienst-Instanz

• Hostname und Portnummer für TCP/IP-Verbindungen zum Namensdienst müssen bekannt sein

◆ Objektreferenz ist vom Remote-Interface java.rmi.registry.Registry

• bind( String s, Remote obj )

registriert Objekt obj unter Name s

• lookup( String s )

gibt Objektreferenz für Objekt mit Namen s zurück

C.17

2002-2005, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005w-AvO-C-RMI.fm, 2005-10-14 11.08] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/

2.4 Finden initialer Referenzen (2)

■ Naming-Interface

◆ abkürzender Zugriff auf bestehende Registry

◆ statische Methoden der Klasse java.rmi.Naming

• bind( String s, Remote obj )registriert Objekt obj unter Name s

• lookup( String s )gibt Objektreferenz für Objekt mit Namen s zurück

• String s ist von der Form: rmi://host:port/objectname— host = Rechner, auf dem Registry läuft— port = Portnummer, unter der Registry registriert ist— objectname = Objektname beim Registrieren bzw. Nachfragen

C.18

Page 10: C Java RMI - fileverteilte Java Objekte / RMI-Objekte implementieren spezielle Java-Interfaces genauer: mindestens ein Java-Interface, das direkt oder indirekt von java.rmi.Remote

2002-2005, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005w-AvO-C-RMI.fm, 2005-10-14 11.08] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/

2.4 Finden initialer Referenzen (3)

■ Beispiel

◆ auf Serverseite

package avo;

public class MyPrinter extends java.rmi.UnicastRemoteObject {...static void main( String [] args ) {

...avo.Printer p = new avo.MyPrinter();java.rmi.Naming.bind( "rmi:MyPrinter", p ); ...

}...public void print( String s )

throws java.rmi.RemoteExeception {...

} }

C.19

2002-2005, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005w-AvO-C-RMI.fm, 2005-10-14 11.08] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/

2.4 Finden initialer Referenzen (4)

■ Beispiel

◆ auf Clientseite

package avo;

public class MyClient {...static void main( String [] args ) {

...avo.Printer p;p= java.rmi.Naming.lookup( "rmi:MyPrinter" ); ...try {

p.print( “Testdruck” );}catch( java.rmi.RemoteException e) {

...}

}}

C.20

Page 11: C Java RMI - fileverteilte Java Objekte / RMI-Objekte implementieren spezielle Java-Interfaces genauer: mindestens ein Java-Interface, das direkt oder indirekt von java.rmi.Remote

2002-2005, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005w-AvO-C-RMI.fm, 2005-10-14 11.08] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/

2.5 Parameterübergabe

■ Parameterübergabesemantik bei lokalen Aufrufen

◆ Call-By-Value für Nicht-Objekttypen (z.B. Integer)

◆ Call-By-Object-Reference für Standard-Java-Objekte undlokale RMI-Objekte

◆ entfernte RMI-Objekte

• Referenz auf Stubobjekt wird übergeben

• Client verwendet Stubobjekt wie lokales Objekt

➜ Call-By-Object-Reference Semantik für RMI-Objekte

ObjektAufruf

übergebene ReferenzInstanzvariable

C.21

2002-2005, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005w-AvO-C-RMI.fm, 2005-10-14 11.08] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/

2.5 Parameterübergabe (2)

■ Parameterübergabesemantik bei entfernten Aufrufen

◆ Marshalling der Parameter

• Parameter werden serialisiert (Java Serialization)

• Erzeugung eines Bytestroms aus den Parametern

• Übertragung des Bytestroms

• Regenerierung der Datentypen und Java-Objekte aus Bytestrom

◆ Call-By-Value für Nicht-Objekttypen (z.B. Integer)

• Datentypen werden kopiert

• Beispiel:

ObjektAufruf

übergebener WertInstanzvariable42

42

Knotengrenze

C.22

Page 12: C Java RMI - fileverteilte Java Objekte / RMI-Objekte implementieren spezielle Java-Interfaces genauer: mindestens ein Java-Interface, das direkt oder indirekt von java.rmi.Remote

2002-2005, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005w-AvO-C-RMI.fm, 2005-10-14 11.08] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/

2.5 Parameterübergabe (3)

◆ serialisierbare Java-Objekte und lokale, nicht-exportierte RMI-Objekte

• Serialisierung führt zu vollständiger Kopie eines Objekts und seiner untergeordneten Objekte

• evtl. große transitive Hülle zu übertragender Daten– aber: Erhaltung der Objektstruktur über alle Parameter

• Call-By-Copy Semantik

ObjektAufruf

übergebene ObjektstrukturInstanzvariable

Knotengrenze

C.23

2002-2005, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005w-AvO-C-RMI.fm, 2005-10-14 11.08] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/

2.5 Parameterübergabe (3)

■ Parameterübergabesemantik bei entfernten Aufrufen (fortges.)

◆ nicht-serialisierbare Java-Objekte

• nicht übertragbar: MarshalException

◆ lokale, exportierte RMI-Objekte

• Einfügung eines geeigneten Stubobjekts in den Bytestrom

• Regenerierung des Stubobjekts auf der Empfängerseite

➜ Call-By-Object-Reference Semantik für lokale RMI-Objekte

◆ entfernte, exportierte RMI-Objekte

• Einfügung des vorhandenen Stubobjekts in den Bytestrom

➜ Call-By-Object-Reference Semantik für entfernte RMI-Objekte

ObjektAufruf

übergebene ReferenzInstanzvariable

C.24

Page 13: C Java RMI - fileverteilte Java Objekte / RMI-Objekte implementieren spezielle Java-Interfaces genauer: mindestens ein Java-Interface, das direkt oder indirekt von java.rmi.Remote

2002-2005, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005w-AvO-C-RMI.fm, 2005-10-14 11.08] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/

2.6 Beispiel

■ Aufbau der Referenz über Namensdienst

JVM Client

JVM Registry

JVM Server

MyPrinterMyClient

Registry

2:bind()1:Ref

3:Ref

4:lookup()

C.25

2002-2005, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005w-AvO-C-RMI.fm, 2005-10-14 11.08] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/

2.6 Beispiel (2)

■ Aufbau der Stubs und Skeletons

JVM Client

JVM Registry

JVM Server

MyPrinterMyClient

Registry

C.26

Page 14: C Java RMI - fileverteilte Java Objekte / RMI-Objekte implementieren spezielle Java-Interfaces genauer: mindestens ein Java-Interface, das direkt oder indirekt von java.rmi.Remote

2002-2005, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005w-AvO-C-RMI.fm, 2005-10-14 11.08] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/

3 Programmiermodell

■ Erweiterung des Java-Programmiermodells

▲ Wesentliche Änderungen gegenüber Java

◆ Interface obligatorisch

◆ Exception-Handling obligatorisch

◆ veränderte Parameterübergabesemantik bei übergebenenNicht-RMI-Objekten

• Zugriffstransparenz verletzt

◆ keine Erkennung von doppelten Object-Locks

• Deadlock beim Wiedereintritt in das selbe RMI-Objekt

Programmiermodell von JavaJava RMI

C.27

2002-2005, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005w-AvO-C-RMI.fm, 2005-10-14 11.08] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/

3 Programmiermodell (2)

✱ Bewahrte Konzepte aus dem Java-Programmiermodell

◆ Objekte

• Methodenaufrufe syntaktisch gleich

◆ Parameterübergabesemantik für übergebene RMI-Objekteund Nicht-Objekte

◆ Typisierung

• volle Typisierung im verteilten Fall

• (dynamische) Type-Casts auch für RMI-Objekte möglich– Stubobjekte besitzen alle Methoden des Originals

◆ Garbage Collection

• transparente Speicherbereinigung

• verteiltes Verfahren zur Speicherbereinigung basierend auf Leases

C.28

Page 15: C Java RMI - fileverteilte Java Objekte / RMI-Objekte implementieren spezielle Java-Interfaces genauer: mindestens ein Java-Interface, das direkt oder indirekt von java.rmi.Remote

2002-2005, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005w-AvO-C-RMI.fm, 2005-10-14 11.08] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/

4 Dynamisches Klassenladen

■ Deserialisierung

◆ Objektinstanzen werden regeneriert

• Instanzvariablen werden restauriert

◆ pro JVM und pro Objekt muss Klasse verfügbar sein

◆ im Verteilten System Verfügbarkeit der Klassen nicht automatisch garantiert

■ Serialisierter Bytestrom enthält Objektdaten keine Klassen

◆ Klassenname wird übertragen

◆ Klasse lokal vorhanden:

• Verwendung für regenerierte Objektinstanz

◆ Klasse nicht lokal vorhanden:

• Möglichkeit des dynamischen Ladens der Klasse über das Netzwerk

• Class-Path (?)

C.29

2002-2005, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005w-AvO-C-RMI.fm, 2005-10-14 11.08] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/

4 Dynamisches Klassenladen (2)

■ Serverseite

◆ Bereitstellung der Klassen über einen externen Server

• Web-Server

• FTP-Server

• File-Server

• Codebase-URL gibt Wurzel für Klassen pro Server an

◆ Codebase muss beim Server-Lauf festgelegt werden

• Java Property java.rmi.server.codebaseliefert Codebase-URL z.B.java -Djava.rmi.server.codebase=http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/classes/ ...

C.30

Page 16: C Java RMI - fileverteilte Java Objekte / RMI-Objekte implementieren spezielle Java-Interfaces genauer: mindestens ein Java-Interface, das direkt oder indirekt von java.rmi.Remote

2002-2005, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005w-AvO-C-RMI.fm, 2005-10-14 11.08] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/

4 Dynamisches Klassenladen (3)

■ Weitergabe von Referenzen auf RMI-Objekte

◆ z.B. bei Registrierung in Registry oder Namensdienst

◆ Stubobjekt wird serialisiert

• RMI-System trägt Klassenname und Codebase in Bytestrom ein

◆ empfangendes RMI-System:

1. Suche der Klasse lokal

2. falls nicht gefunden: Laden der Klasse über Codebase + Klassennamez.B. Klasse avo.MyPrinter_Stub unterhttp://www-vs....de/teach/ws04/avo/classes/avo/

MyPrinter_Stub.class

3. falls nicht gefunden: Laden der Klasse über clientseitig definierteCodebase (z.B. über Codebase-Property)

4. falls nicht gefunden: ClassNotFoundException

◆ für entfernt geladene Klassen steht Codebase für erneute Weitergabe fest

C.31

2002-2005, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005w-AvO-C-RMI.fm, 2005-10-14 11.08] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/

4 Dynamisches Klassenladen (4)

■ Beispiel

◆ Code für MyPrinter_Stub wird dynamisch geladen

JVM Registry

JVM Server

MyPrinter

RegistryWebserver

C.32

Page 17: C Java RMI - fileverteilte Java Objekte / RMI-Objekte implementieren spezielle Java-Interfaces genauer: mindestens ein Java-Interface, das direkt oder indirekt von java.rmi.Remote

2002-2005, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005w-AvO-C-RMI.fm, 2005-10-14 11.08] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/

4 Dynamisches Klassenladen (5)

■ Beispiel

◆ Code für MyPrinter_Stub wird dynamisch geladen

JVM Registry

JVM Server

MyPrinter

RegistryWebserver

JVM Client

MyClient

C.33

2002-2005, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005w-AvO-C-RMI.fm, 2005-10-14 11.08] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/

5 Implementierung

■ Vorgabe eines RMI-Gerüstes durch Sun Microsystem

◆ verschiedene Implementierungen möglich

• meist jedoch die von Sun verwendet (Package sun.rmi)

C.34

Page 18: C Java RMI - fileverteilte Java Objekte / RMI-Objekte implementieren spezielle Java-Interfaces genauer: mindestens ein Java-Interface, das direkt oder indirekt von java.rmi.Remote

2002-2005, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005w-AvO-C-RMI.fm, 2005-10-14 11.08] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/

5.1 Client-Seite

■ Implementierung der Stubs

RemoteObject

RemoteStub

MyPrinter_Stub

0..1

<<Interface>>RemoteRef

◆ sichtbare RMI-Komponenten

◆ RemoteObject

• Basisklasse für Stubs und RMI-Objekte

◆ RemoteStub

• Basisklasse für alle Stubs

◆ RemoteRef

• Interface für Protokollimplementierung

C.35

2002-2005, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2005w-AvO-C-RMI.fm, 2005-10-14 11.08] http://www-vs.informatik.uni-ulm.de/teach/ws04/avo/

5.1 Client-Seite (2)

■ Stub generalisiert Aufrufe

■ Aufruf der invoke()-Methode an RemoteRef

◆ wie bei Java-Reflection

• Method-Objekt bezeichnet Methode, Object-Array bezeichnet Parameter

■ Java Remote Method Protocol (JRMP)

◆ im Wesentlichen Java-Serialisierung

• Annotierung der Codebase, falls vorhanden

◆ Signalisierung von Aufrufen

◆ Multiplexen mehrerer Aufrufe

◆ Adressierung über Hostname/IP-Adresse, Portnummer

• Bestandteil der RemoteRef

◆ weitere Adressierung über Objektidentifikator

C.36


Recommended