Komponentenmodelle II

Werbung
Komponentenmodelle II
Remote Method Invocation (RMI)
Detlef Streitferdt
Technische Universität Ilmenau
RMI Funktionsweise
{
RMI
System
Client
Server
Proxy
Stub
Remote Reference
Layer
Remote Reference
Layer
TU-Ilmenau, Softwaresysteme/Prozessinformatik, KBSE
Transport Layer
Komponentenmodelle II
2
Pr ox y / Stellvertreter Muster
TU-Ilmenau, Softwaresysteme/Prozessinformatik, KBSE
Komponentenmodelle II
3
Entwicklung RMI-basierter Systeme
• Entwurf
– welche Objekte sind lokal, welche verteilt?
– Server: Schnittstellen verteilter Objekte definieren
• Implementierung
– Server: Klassen verteilter Objekte erben von spezieller Klasse
– Client: Ausnahmen bei verteilten Methodenaufrufen behandeln
– Serialisierbarkeit lokaler (Parameter-)Objekte sicherstellen
• Auslieferung
– Quellcode wie gewohnt mit javac übersetzen
– Stubs für verteilte Objekte mit rmic generieren
TU-Ilmenau, Softwaresysteme/Prozessinformatik, KBSE
Komponentenmodelle II
4
Schnittstellen verteilter Objekte definieren
import java.rmi.*;
«interface»
java::rmi::Remote
public interface Ibibliothek
extends Remote
{
public String findeBuch(
String signatur)
throws RemoteException;
«interface»
IBibliothek
... und weitere Methoden ...
}
findeBuch(signatur) : String
TU-Ilmenau, Softwaresysteme/Prozessinformatik, KBSE
Komponentenmodelle II
5
Klassen verteilter Objekte implementieren
java::rmi::server::
UnicastRemoteObject
Bibliothek
buchbestand : *Buch
findeBuch(signatur) : String
import java.rmi.*;
import java.rmi.server.*;
public class Bibliothekextends
extends UnicastRemoteObject
implements Ibibliothek
{
public Bibliothek()
throws RemoteException {}
public String findeBuch(
String signatur)
{ ...; return "Buch..."; }
«implements»
«interface»
IBibliothek
TU-Ilmenau, Softwaresysteme/Prozessinformatik, KBSE
}
Komponentenmodelle II
6
Verteilte Objekte registrieren
import java.rmi.*;
if (System.getSecurityManager() == null)
System.setSecurityManager(new RMISecurityManager());
try {
Bibliothek bib = new Bibliothek();
Naming.rebind("//www.hochschule.de/Bibliothek",
bib);
} catch (Exception ex) {
// Ausnahme behandeln
}
rmiregistry : java::rmi::Naming
"//.../Bibliothek"
TU-Ilmenau, Softwaresysteme/Prozessinformatik, KBSE
Komponentenmodelle II
7
Methoden verteilter Objekte aufrufen
import java.rmi.*;
if (System.getSecurityManager() == null)
System.setSecurityManager(new RMISecurityManager());
try {
IBibliothek bib = (IBibliothek) Naming.lookup(
"//www.hochschule.de/Bibliothek");
bib.findeBuch("24353 GH 78");
}
catch (Exception ex) {
// Ausnahme behandeln
}
TU-Ilmenau, Softwaresysteme/Prozessinformatik, KBSE
Komponentenmodelle II
8
Bewertung von RMI
• Vorteile
– einfache Implementierung (keine IDL, keine UUIDs)
– Objekte als Werte übergeben (nicht nur per Referenz)
– Garbage Collection wie gehabt
– „unabhängig“ vom Betriebssystem
• Nachteile
– Verteilung durchzieht gesamte Implementierung
– festgelegt auf Java als Programmiersprache
– proprietäres Kommunikationsprotokoll
TU-Ilmenau, Softwaresysteme/Prozessinformatik, KBSE
Komponentenmodelle II
9
Herunterladen