Remote Method Invocation

Werbung
Remote Method
Invocation - RMI
Jan-Ole Giebel
Einführung
Begriffsklärung
Problemstellung
Netzwerkkommunikation
Remote Method Invocation - RMI
Jan-Ole Giebel
RMI
Grundlegende Technik
Serialisierung
Sicherheit
Implementierung
Anforderungen
Interfaces
Hochschule für angewandte Wissenschaften Hamburg
Fortgeschrittenes Programmieren mit Java
Beispiel
8. Juni 2012
Quellen
Observer-Pattern
Erweiterung für RMI
Fehlerquellen
1 / 31
Inhalt
Einführung
Begriffsklärung
Problemstellung
Netzwerkkommunikation
RMI
Grundlegende Technik
Serialisierung
Sicherheit
Remote Method
Invocation - RMI
Jan-Ole Giebel
Einführung
Begriffsklärung
Problemstellung
Netzwerkkommunikation
RMI
Grundlegende Technik
Serialisierung
Sicherheit
Implementierung
Anforderungen
Interfaces
Beispiel
Implementierung
Anforderungen
Interfaces
Observer-Pattern
Erweiterung für RMI
Fehlerquellen
Quellen
Beispiel
Observer-Pattern
Erweiterung für RMI
Fehlerquellen
Quellen
2 / 31
Begriffsklärung
Konzepte im Softwareengineering
Remote Method
Invocation - RMI
Jan-Ole Giebel
Einführung
Begriffsklärung
Problemstellung
Netzwerkkommunikation
Worauf man bei der Entwicklung achten sollte
Bei Methoden:
I
KISS (Keep it stupid simple)
I
Do only one thing
Bei Klassen:
I
Single Responsibility Principle
I
Dependency Inversion Principle
RMI
Grundlegende Technik
Serialisierung
Sicherheit
Implementierung
Anforderungen
Interfaces
Beispiel
Observer-Pattern
Erweiterung für RMI
Fehlerquellen
Quellen
Diese Prinzipien erhöhen und vereinfachen die Testbarkeit
der Software und dadurch die Zufriedenheit beim Kunden.
3 / 31
Problemstellung
Java Runtime Environments
Remote Method
Invocation - RMI
Jan-Ole Giebel
Einführung
Klassische Javaprogramme
I
alle Objekte in einer JRE
I
alle Objekte auf einem Host
Begriffsklärung
Problemstellung
Netzwerkkommunikation
RMI
Grundlegende Technik
Serialisierung
Sicherheit
Implementierung
Weitere Anwendungsfälle
I
Anwendungen verteilt auf verschiedene JREs
I
Server-Client-Systeme
I
Peer-To-Peer
Anforderungen
Interfaces
Beispiel
Observer-Pattern
Erweiterung für RMI
Fehlerquellen
Quellen
4 / 31
Problemstellung
Java Runtime Environments
Remote Method
Invocation - RMI
Jan-Ole Giebel
Einführung
Klassische Javaprogramme
I
alle Objekte in einer JRE
I
alle Objekte auf einem Host
Begriffsklärung
Problemstellung
Netzwerkkommunikation
RMI
Grundlegende Technik
Serialisierung
Sicherheit
Implementierung
Weitere Anwendungsfälle
I
Anwendungen verteilt auf verschiedene JREs
I
Server-Client-Systeme
I
Peer-To-Peer
Anforderungen
Interfaces
Beispiel
Observer-Pattern
Erweiterung für RMI
Fehlerquellen
Quellen
Referenzen auf entfernte Host und verschiedene JREs?
4 / 31
Netzwerkkommunikation
Protokolle OSI-Layer-3
Remote Method
Invocation - RMI
Jan-Ole Giebel
Einführung
Wichtige Layer 3 Protokolle
I
IPv4
I
IPv6
I
IPX
Begriffsklärung
Problemstellung
Netzwerkkommunikation
RMI
Grundlegende Technik
Serialisierung
Sicherheit
Implementierung
Anforderungen
Interfaces
Beispiel
Adressierung bei IPv4
I
32bit Adresse als Identifizierung des Host
I
Port zur Verbindung mit Anwendung
I
Beispiel 192.168.0.2:8080
Observer-Pattern
Erweiterung für RMI
Fehlerquellen
Quellen
5 / 31
Netzwerkkommunikation
Protokolle OSI-Layer-4
Remote Method
Invocation - RMI
Jan-Ole Giebel
Einführung
Begriffsklärung
Problemstellung
Netzwerkkommunikation
RMI
Wichtige Layer 4 Protokolle
I
I
Transmission Control Protocol (TCP) →
verbindungsorientiert
User Datagram Protokol (UDP) → verbindungslos
Grundlegende Technik
Serialisierung
Sicherheit
Implementierung
Anforderungen
Interfaces
Beispiel
Observer-Pattern
Erweiterung für RMI
Fehlerquellen
Quellen
6 / 31
Remote Method
Invocation - RMI
RMI
Jan-Ole Giebel
Hintergrund
Historische Wurzeln
Einführung
RFC1
I
Remote Procedure Call (RPC) →
I
Grundidee von RPC ist der Zugriff auf entfernte
Funktionalitäten
I
Grundidee von James E. White entstand 1976 → RFC
707
1057 und 5531
Begriffsklärung
Problemstellung
Netzwerkkommunikation
RMI
Grundlegende Technik
Serialisierung
Sicherheit
Implementierung
Anforderungen
Interfaces
Beispiel
Eigenschaften von RMI
Observer-Pattern
Erweiterung für RMI
Fehlerquellen
Quellen
I
Ermöglich Zugriff auf Objekte in fremden JREs und auf
entfernten Hosts
I
Netzwerkverbindung via TCP/IP
I
Entwicklung ab J2SE 5.0 nicht abwärtskompatibel
1
Request or Comments
http://www.ietf.org/rfc.html
7 / 31
Grundlegende Technik
Komponenten
Registry
I
Verwaltungsinstanz für Objekte
I
Port 1099 (Default)
I
Zuordnung (Bind) von Objekt auf eindeutigen Namen
Remote Method
Invocation - RMI
Jan-Ole Giebel
Einführung
Begriffsklärung
Problemstellung
Netzwerkkommunikation
RMI
Grundlegende Technik
Serialisierung
Sicherheit
Implementierung
Anforderungen
Interfaces
Server
I
Gibt Objekte via Registry frei
I
Zugriff auf Objekte über Randomport (Default)
Beispiel
Observer-Pattern
Erweiterung für RMI
Fehlerquellen
Quellen
Client
I
Fragt Objektreferenzen auf Registry an
I
Kenntnis der Objekte über Interfaces
8 / 31
Grundlegende Technik
Interface java.rmi.Remote
Remote Method
Invocation - RMI
Jan-Ole Giebel
Einführung
Begriffsklärung
Problemstellung
Netzwerkkommunikation
Funktionalität
I
I
I
Muss mit dem funktionalen Interface des Objektes
erweitert werden
Markiert das implementierende Interface als Remote
Interface
Registry gibt nur Objekte vom Typ Remote zurück
RMI
Grundlegende Technik
Serialisierung
Sicherheit
Implementierung
Anforderungen
Interfaces
Beispiel
Observer-Pattern
Erweiterung für RMI
Fehlerquellen
Quellen
9 / 31
Grundlegende Technik
Interface java.rmi.Remote
Remote Method
Invocation - RMI
Jan-Ole Giebel
Einführung
Begriffsklärung
Problemstellung
Netzwerkkommunikation
Funktionalität
I
I
I
Muss mit dem funktionalen Interface des Objektes
erweitert werden
Markiert das implementierende Interface als Remote
Interface
Registry gibt nur Objekte vom Typ Remote zurück
RMI
Grundlegende Technik
Serialisierung
Sicherheit
Implementierung
Anforderungen
Interfaces
Beispiel
Observer-Pattern
Erweiterung für RMI
Fehlerquellen
Quellen
Remote macht ein Objekt im Kontext RMI deklarativ
nutzbar.
9 / 31
Grundlegende Technik
Klasse UnicastRemoteObject
Remote Method
Invocation - RMI
Jan-Ole Giebel
Einführung
Funktionalität
Begriffsklärung
Problemstellung
Netzwerkkommunikation
RMI
I
Jedes konkrete RMI-Objekt muss UnicastRemoteObject
erweitern (extends)
I
Ermöglicht den Export eines Objektes an einen
speziellen Port
I
Jede Methode kann eine RemoteException werfen
(throws RemoteException)
Grundlegende Technik
Serialisierung
Sicherheit
Implementierung
Anforderungen
Interfaces
Beispiel
Observer-Pattern
Erweiterung für RMI
Fehlerquellen
Quellen
10 / 31
Grundlegende Technik
Klasse UnicastRemoteObject
Remote Method
Invocation - RMI
Jan-Ole Giebel
Einführung
Funktionalität
Begriffsklärung
Problemstellung
Netzwerkkommunikation
RMI
I
Jedes konkrete RMI-Objekt muss UnicastRemoteObject
erweitern (extends)
I
Ermöglicht den Export eines Objektes an einen
speziellen Port
I
Jede Methode kann eine RemoteException werfen
(throws RemoteException)
Grundlegende Technik
Serialisierung
Sicherheit
Implementierung
Anforderungen
Interfaces
Beispiel
Observer-Pattern
Erweiterung für RMI
Fehlerquellen
Quellen
UnicastRemoteObject macht eine Objekt im Kontext RMI
funktional nutzbar.
10 / 31
Serialisierung
Technik
Remote Method
Invocation - RMI
Jan-Ole Giebel
Einführung
Begriffsklärung
Problemstellung
Netzwerkkommunikation
RMI
Grundlegendes
I
Standardtechnologie zum Übertragen von kompletten
Objekten
I
Objekte werden ein- und ausgepackt
I
Anwendung bei Deep Copy, FileIO und
Netzwerkübertragung
Grundlegende Technik
Serialisierung
Sicherheit
Implementierung
Anforderungen
Interfaces
Beispiel
Observer-Pattern
Erweiterung für RMI
Fehlerquellen
Quellen
11 / 31
Serialisierung
Remote Method
Invocation - RMI
Interface Serializable
Jan-Ole Giebel
Einführung
Funktionalität
I
Markerinterface
I
Keine Methoden
I
serialVersionUID zum Versionsabgleich
Begriffsklärung
Problemstellung
Netzwerkkommunikation
RMI
Grundlegende Technik
Serialisierung
Sicherheit
Implementierung
Anforderungen
Interfaces
Serialisiert wird nicht
I
Alle klassengebundenen Methoden und Attribute
I
Inhalt von als transient markierten Attributen (sinnvoll
bei gespeicherten Passwort)
Beispiel
Observer-Pattern
Erweiterung für RMI
Fehlerquellen
Quellen
12 / 31
Serialisierung
Remote Method
Invocation - RMI
Interface Serializable
Jan-Ole Giebel
Einführung
Funktionalität
I
Markerinterface
I
Keine Methoden
I
serialVersionUID zum Versionsabgleich
Begriffsklärung
Problemstellung
Netzwerkkommunikation
RMI
Grundlegende Technik
Serialisierung
Sicherheit
Implementierung
Anforderungen
Interfaces
Serialisiert wird nicht
I
Alle klassengebundenen Methoden und Attribute
I
Inhalt von als transient markierten Attributen (sinnvoll
bei gespeicherten Passwort)
Beispiel
Observer-Pattern
Erweiterung für RMI
Fehlerquellen
Quellen
Serialisierung und Deserialisierung anhand von Klassen.
12 / 31
Sicherheit
Policy-File
Motivation im Kontext RMI
I
Beschränkung von Zugriffen auf die JRE
I
Beschränkung von Verbindungen zur JRE
Prinzip der Policy-Files
I
Policy-Files . . . /jre/lib/security/java.policy und
. . . /<USER HOME>/.java.policy
I
Zusätzliche Policy-Files beim ausführen von java“als
”
Commandline Parameter möglich
I
Policytool von Java ermöglicht einfaches erstellen und
bearbeiten der Files
Remote Method
Invocation - RMI
Jan-Ole Giebel
Einführung
Begriffsklärung
Problemstellung
Netzwerkkommunikation
RMI
Grundlegende Technik
Serialisierung
Sicherheit
Implementierung
Anforderungen
Interfaces
Beispiel
Observer-Pattern
Erweiterung für RMI
Fehlerquellen
Quellen
13 / 31
Sicherheit
Policy-File
Motivation im Kontext RMI
I
Beschränkung von Zugriffen auf die JRE
I
Beschränkung von Verbindungen zur JRE
Prinzip der Policy-Files
I
Policy-Files . . . /jre/lib/security/java.policy und
. . . /<USER HOME>/.java.policy
I
Zusätzliche Policy-Files beim ausführen von java“als
”
Commandline Parameter möglich
I
Policytool von Java ermöglicht einfaches erstellen und
bearbeiten der Files
Remote Method
Invocation - RMI
Jan-Ole Giebel
Einführung
Begriffsklärung
Problemstellung
Netzwerkkommunikation
RMI
Grundlegende Technik
Serialisierung
Sicherheit
Implementierung
Anforderungen
Interfaces
Beispiel
Observer-Pattern
Erweiterung für RMI
Fehlerquellen
Quellen
Policies addieren sich zu übergeordneten Policy-Files
13 / 31
Sicherheit
Beispiel Policy-File
Remote Method
Invocation - RMI
Jan-Ole Giebel
Einführung
Begriffsklärung
Problemstellung
Netzwerkkommunikation
1
2
3
grant codeBase "file:/home/teadmin/rmi_observer_test/
RMIObserverTest_fat_server.jar"{
permission java.security.AllPermission;
};
RMI
Grundlegende Technik
Serialisierung
Sicherheit
Implementierung
Anforderungen
Interfaces
Funktionalität
I
Auf jar-Archiv angewendete Policy
I
Komplette Rechtefreigabe
Beispiel
Observer-Pattern
Erweiterung für RMI
Fehlerquellen
Quellen
14 / 31
Sicherheit
Beispiel Policy-File
Remote Method
Invocation - RMI
Jan-Ole Giebel
Einführung
Begriffsklärung
Problemstellung
Netzwerkkommunikation
1
2
3
grant codeBase "file:/home/teadmin/rmi_observer_test/
RMIObserverTest_fat_server.jar"{
permission java.security.AllPermission;
};
RMI
Grundlegende Technik
Serialisierung
Sicherheit
Implementierung
Anforderungen
Interfaces
Funktionalität
I
Auf jar-Archiv angewendete Policy
I
Komplette Rechtefreigabe
Beispiel
Observer-Pattern
Erweiterung für RMI
Fehlerquellen
Quellen
Komplette Rechtefreigabe nur im Kontext des jar-Archivs
sicherheitskritisch.
14 / 31
Sicherheit
Bind auf entfernten Hosts
Remote Method
Invocation - RMI
Jan-Ole Giebel
Einführung
Gefahrenquellen
Begriffsklärung
Problemstellung
Netzwerkkommunikation
RMI
I
Liste der Registrierten Objekte einsehbar→Registrieren
von schädlichen Objekten unter unschädlichem Namen
I
Angriffe auf Registry-Host durch bind von vielen
Objekten (Heap Size Exception)
Grundlegende Technik
Serialisierung
Sicherheit
Implementierung
Anforderungen
Interfaces
Beispiel
Observer-Pattern
Erweiterung für RMI
Fehlerquellen
Quellen
15 / 31
Sicherheit
Bind auf entfernten Hosts
Remote Method
Invocation - RMI
Jan-Ole Giebel
Einführung
Gefahrenquellen
Begriffsklärung
Problemstellung
Netzwerkkommunikation
RMI
I
Liste der Registrierten Objekte einsehbar→Registrieren
von schädlichen Objekten unter unschädlichem Namen
I
Angriffe auf Registry-Host durch bind von vielen
Objekten (Heap Size Exception)
Grundlegende Technik
Serialisierung
Sicherheit
Implementierung
Anforderungen
Interfaces
Beispiel
Observer-Pattern
Erweiterung für RMI
Fehlerquellen
Binden von Objekten ausgehend von entfernten Hosts ist
verboten.
Quellen
15 / 31
Sicherheit
Bind auf entfernten Hosts
Remote Method
Invocation - RMI
Jan-Ole Giebel
Einführung
Gefahrenquellen
Begriffsklärung
Problemstellung
Netzwerkkommunikation
RMI
I
Liste der Registrierten Objekte einsehbar→Registrieren
von schädlichen Objekten unter unschädlichem Namen
I
Angriffe auf Registry-Host durch bind von vielen
Objekten (Heap Size Exception)
Grundlegende Technik
Serialisierung
Sicherheit
Implementierung
Anforderungen
Interfaces
Beispiel
Observer-Pattern
Erweiterung für RMI
Fehlerquellen
Binden von Objekten ausgehend von entfernten Hosts ist
verboten.
Einfachste Lösung: Server und Registry auf gleichem Host
realisieren
Quellen
15 / 31
Anforderungen
Mindestanforderung an RMI-Objekte
Remote Method
Invocation - RMI
Jan-Ole Giebel
Einführung
Remoteinterface
1
2
3
public interface RemoteObjectInterface extends java.rmi.Remote{
public void RemoteMethod throws RemoteException();
}
Begriffsklärung
Problemstellung
Netzwerkkommunikation
RMI
Grundlegende Technik
Serialisierung
Sicherheit
Implementierung
Konkretes Remoteobjekt
Anforderungen
Interfaces
Beispiel
1
2
3
4
public class ConcreteRemoteObject extends UnicastRemoteObject implements
RemoteObjectInterface{
public ConcreteRemoteObject() throws RemoteException{
super();
}
Observer-Pattern
Erweiterung für RMI
Fehlerquellen
Quellen
5
public void RemoteMethod throws RemoteException(){
System.out.println("do something");
}
6
7
8
9
}
16 / 31
Anforderungen
Mindestanforderung an RMI-Server
Remote Method
Invocation - RMI
Jan-Ole Giebel
Einführung
Begriffsklärung
Problemstellung
Netzwerkkommunikation
RMI
RMI-Server mit Registry
Grundlegende Technik
Serialisierung
Sicherheit
Implementierung
1
2
3
4
5
6
public class RMIServer{
public RMIServer() throws RemoteException{
Registry reg = LocateRegistry.createRegistry();
reg.bind("RemoteObjectName",new ConcreteRemoteObject());
}
}
Anforderungen
Interfaces
Beispiel
Observer-Pattern
Erweiterung für RMI
Fehlerquellen
Quellen
17 / 31
Anforderungen
Mindestanforderung an RMI-Ansprache
Remote Method
Invocation - RMI
Jan-Ole Giebel
Einführung
RMI-Client
1
2
3
4
5
6
7
public class RMIClient{
private String hostname = "localhost";
private int port = 8888;
public void fetchFromRegistry(){
Registry reg = LocateRegistry.retrieveRegistry(hostname,port
);
RemoteObjektInterface obj = (RemoteObjektInterface) reg.
lookup("RemoteObjektName");
}
8
public void fetchFromRegistryAlternative(){
RemoteObjektInterface obj = (RemoteObjektInterface)Naming.
lookup("rmi://"+hostname+":"+port+"/RemoteObjectName")
;
}
9
10
11
12
Begriffsklärung
Problemstellung
Netzwerkkommunikation
RMI
Grundlegende Technik
Serialisierung
Sicherheit
Implementierung
Anforderungen
Interfaces
Beispiel
Observer-Pattern
Erweiterung für RMI
Fehlerquellen
Quellen
}
18 / 31
Anforderungen
Mindestanforderung an RMI-Daten
Remote Method
Invocation - RMI
Jan-Ole Giebel
Einführung
Begriffsklärung
Problemstellung
Netzwerkkommunikation
RMI
RMI-Daten
Unter RMI-Daten fallen:
1
2
3
4
I
Parameter in Methoden
I
Rückgabewerte von Methoden
public class RMIData implements Serializable{
private static final long serialVersionUID = 42L;
...
}
Grundlegende Technik
Serialisierung
Sicherheit
Implementierung
Anforderungen
Interfaces
Beispiel
Observer-Pattern
Erweiterung für RMI
Fehlerquellen
Quellen
19 / 31
Interfaces
Clean Code
Remote Method
Invocation - RMI
Jan-Ole Giebel
Einführung
Entwickle gegen Interfaces, nicht gegen Klassen
I
I
I
Interfaces repräsentieren Konzepte, Klassen die konkrete
Implementierung
Ändern sich Details der Implementierung, bleibt das
Konzept gleich
Abgrenzung der Fehlerauswirkung im Fehlerfall
Begriffsklärung
Problemstellung
Netzwerkkommunikation
RMI
Grundlegende Technik
Serialisierung
Sicherheit
Implementierung
Anforderungen
Interfaces
Beispiel
Observer-Pattern
Erweiterung für RMI
Fehlerquellen
Quellen
In der Implementierung weisst man dem Interface-Typ den
Klassen-Typ zu.
1
InterfaceTyp obj = new KlassenTyp();
20 / 31
Interfaces
Clean Code - Beispiel
Beispiel Katze
I
Besitzer und Tierarzt haben eine Katze vor sich sitzen
I
Besitzer wird von seinem Haustier Katze gebissen, aber
die Katze zeigt Reue
I
Tierarzt wird von dem Patienten Katze gebissen, aber
die Katze zeigt keine Reue
Auswirkungen
I
Änderung an der Implementierung der Methode
Patient.beisst() hat keine Auswirkung auf Katze.beisst()
I
Klasse gehorcht dem SRP2 und dem DIP3
2
3
Remote Method
Invocation - RMI
Jan-Ole Giebel
Einführung
Begriffsklärung
Problemstellung
Netzwerkkommunikation
RMI
Grundlegende Technik
Serialisierung
Sicherheit
Implementierung
Anforderungen
Interfaces
Beispiel
Observer-Pattern
Erweiterung für RMI
Fehlerquellen
Quellen
Single Responsibility Principle
Dependency Inversion Principle
21 / 31
Interfaces
Clean Code - RMI
Remote Method
Invocation - RMI
Jan-Ole Giebel
Einführung
Begriffsklärung
Problemstellung
Netzwerkkommunikation
Einsatz bei RMI
I
I
Konkrete Implementierungen stehen auf dem Server zur
Verfügung
Verschiedene Clients nutzen die Implementierungen
nach gleichem Konzept
RMI erlaubt je nach Policy sehr vielen Usern auf Objekte
zuzugreifen. Durch SRP und DIP wird die
Änderungsauswirkung stark begrenzt.
RMI
Grundlegende Technik
Serialisierung
Sicherheit
Implementierung
Anforderungen
Interfaces
Beispiel
Observer-Pattern
Erweiterung für RMI
Fehlerquellen
Quellen
22 / 31
Beispiel
Observer-Pattern
Remote Method
Invocation - RMI
Jan-Ole Giebel
Einführung
Resource Management im Testprozess
Begriffsklärung
Problemstellung
Netzwerkkommunikation
RMI
I
Mehrere unterschiedliche Testumgebungen
I
Tests sollen auf speziellen Umgebungen ausgeführt
werden
I
I
Zugriff auf die Umgebung soll zentral und automatisiert
ablaufen
Testausführung vom Rechner des Testers mittels
Framework wie JUnit
Grundlegende Technik
Serialisierung
Sicherheit
Implementierung
Anforderungen
Interfaces
Beispiel
Observer-Pattern
Erweiterung für RMI
Fehlerquellen
Quellen
23 / 31
Beispiel
Observer-Pattern
Remote Method
Invocation - RMI
Jan-Ole Giebel
Einführung
Resource Management im Testprozess
Begriffsklärung
Problemstellung
Netzwerkkommunikation
RMI
I
Mehrere unterschiedliche Testumgebungen
I
Tests sollen auf speziellen Umgebungen ausgeführt
werden
I
I
Zugriff auf die Umgebung soll zentral und automatisiert
ablaufen
Testausführung vom Rechner des Testers mittels
Framework wie JUnit
Grundlegende Technik
Serialisierung
Sicherheit
Implementierung
Anforderungen
Interfaces
Beispiel
Observer-Pattern
Erweiterung für RMI
Fehlerquellen
Quellen
Idee: Resourcemanager ist bei einer RMI-Registry registriert
und informiert mittels Observer-Pattern die Tests über freie
Ressource.
23 / 31
Implementierung in Java
Interface Observer
Remote Method
Invocation - RMI
Jan-Ole Giebel
Einführung
Interface Observer als Klassendiagramm
I
Besitzt nur eine Methode für das Update
I
Unterstützt Push und Pull
Begriffsklärung
Problemstellung
Netzwerkkommunikation
RMI
Grundlegende Technik
Serialisierung
Sicherheit
Implementierung
Anforderungen
Interfaces
Beispiel
Observer-Pattern
Erweiterung für RMI
Fehlerquellen
Quellen
Abbildung: UML-Darstellung des Interfaces Oberver
24 / 31
Implementierung in Java
Klasse Observable
Klasse Observable als Klassendiagramm
I
Basisklasse für alle Subjects
I
Unterstützt Push und Pull
I
Vor jedem Notify muss das Objekt als geändert markiert
werden
Remote Method
Invocation - RMI
Jan-Ole Giebel
Einführung
Begriffsklärung
Problemstellung
Netzwerkkommunikation
RMI
Grundlegende Technik
Serialisierung
Sicherheit
Implementierung
Anforderungen
Interfaces
Beispiel
Observer-Pattern
Erweiterung für RMI
Fehlerquellen
Quellen
Abbildung: UML-Darstellung der Klasse Observable
25 / 31
Implementierung in Java
Probleme der Javaimplementierung
Observer
I
Kein Remote
I
Observer ist nur auf einem Host in einer JRE nutzbar
Observable
I
Konkrete Implementierung
I
Verstoß gegen SRP und DIP
I
Alle Observables und Observer sind von Änderungen
betroffen
I
Kein Remote
I
Observable ist nur auf einem Host in einer JRE nutzbar
Remote Method
Invocation - RMI
Jan-Ole Giebel
Einführung
Begriffsklärung
Problemstellung
Netzwerkkommunikation
RMI
Grundlegende Technik
Serialisierung
Sicherheit
Implementierung
Anforderungen
Interfaces
Beispiel
Observer-Pattern
Erweiterung für RMI
Fehlerquellen
Quellen
26 / 31
Implementierung in Java
Probleme der Javaimplementierung
Observer
Remote Method
Invocation - RMI
Jan-Ole Giebel
Einführung
I
Kein Remote
I
Observer ist nur auf einem Host in einer JRE nutzbar
Observable
Begriffsklärung
Problemstellung
Netzwerkkommunikation
RMI
Grundlegende Technik
Serialisierung
Sicherheit
Implementierung
I
Konkrete Implementierung
I
Verstoß gegen SRP und DIP
I
Alle Observables und Observer sind von Änderungen
betroffen
I
Kein Remote
I
Observable ist nur auf einem Host in einer JRE nutzbar
Anforderungen
Interfaces
Beispiel
Observer-Pattern
Erweiterung für RMI
Fehlerquellen
Quellen
Eigenimplementierung nötig.
26 / 31
Erweiterung für RMI
Definition der Remoteobjekte
Remote Method
Invocation - RMI
Jan-Ole Giebel
Einführung
Ein Remote stellt entfernte Funktionalität bereit
Begriffsklärung
Problemstellung
Netzwerkkommunikation
RMI
I
Subject
I
Observer
Implementierung
I
Interfaces für Konzepte definieren
I
Interfaces erweitern Remote
I
Konkrete Klasse anhand der Interfaces implementieren
I
Klasse muss UnicastRemoteObject erweitern und dessen
Konstruktor benutzen
Grundlegende Technik
Serialisierung
Sicherheit
Implementierung
Anforderungen
Interfaces
Beispiel
Observer-Pattern
Erweiterung für RMI
Fehlerquellen
Quellen
27 / 31
Erweiterung für RMI
Definition der Datenobjekte
Remote Method
Invocation - RMI
Jan-Ole Giebel
Einführung
Was sind alles Datenobjekte?
Begriffsklärung
Problemstellung
Netzwerkkommunikation
RMI
I
Alle Rückgabewerte, die kein Remote sind
I
Alle Typen der Übergabeparameter, die kein Remote
sind
Grundlegende Technik
Serialisierung
Sicherheit
Implementierung
Anforderungen
Interfaces
Beispiel
Implementierung
I
Interfaces für Konzepte definieren
I
Klassen anhand der Interfaces implementieren
I
Datenobjekte müssen Serializable implementieren
I
Interfaces der Konzepte sollten Serializable erweitern
Observer-Pattern
Erweiterung für RMI
Fehlerquellen
Quellen
28 / 31
Erweiterung für RMI
Klassendiagramm
Remote Method
Invocation - RMI
Jan-Ole Giebel
Einführung
Begriffsklärung
Problemstellung
Netzwerkkommunikation
RMI
Grundlegende Technik
Serialisierung
Sicherheit
Implementierung
Anforderungen
Interfaces
Beispiel
Observer-Pattern
Erweiterung für RMI
Fehlerquellen
Quellen
Abbildung: UML-Darstellung der Klasse Observable
29 / 31
Fehlerquellen
Häufigste Fehlerquellen
Remote Method
Invocation - RMI
Jan-Ole Giebel
Einführung
Interfaces und Klassen
I
Remote wird nicht erweitert
I
Serializable wird nicht erweitert
I
Der Konstruktor von UnicastRemoteObject wird von
erweiternden Klassen nicht benutzt
Begriffsklärung
Problemstellung
Netzwerkkommunikation
RMI
Grundlegende Technik
Serialisierung
Sicherheit
Implementierung
Anforderungen
Interfaces
Beispiel
Netzwerk
I
Netzwerk nicht verfügbar, langsam, instabil,. . .
I
Sicherheitsrichtlinien im Routing
I
Portfreigabe an Firewalls
Observer-Pattern
Erweiterung für RMI
Fehlerquellen
Quellen
30 / 31
Fehlerquellen
Häufigste Fehlerquellen
Remote Method
Invocation - RMI
Jan-Ole Giebel
Einführung
Interfaces und Klassen
I
Remote wird nicht erweitert
I
Serializable wird nicht erweitert
I
Der Konstruktor von UnicastRemoteObject wird von
erweiternden Klassen nicht benutzt
Begriffsklärung
Problemstellung
Netzwerkkommunikation
RMI
Grundlegende Technik
Serialisierung
Sicherheit
Implementierung
Anforderungen
Interfaces
Beispiel
Netzwerk
I
Netzwerk nicht verfügbar, langsam, instabil,. . .
I
Sicherheitsrichtlinien im Routing
I
Portfreigabe an Firewalls
Observer-Pattern
Erweiterung für RMI
Fehlerquellen
Quellen
Fehlererkennung und Vermeidung durch gutes“Exception
”
handling
30 / 31
Quellen
Remote Method
Invocation - RMI
Jan-Ole Giebel
Einführung
I
I
Erich Gamma, Richard Helm, Ralph Johnson, John
Vlissides: Design Patterns. Elements of Reusable
”
Object-Oriented Software.“, Addison-Wesley Longman,
Amsterdam, 1st ed., Reprint. (31. Oktober 1994)
Robert C. Martin, Clean Code. A Handbook of Agile
”
Software Craftmanship.“, Prentice Hal, 1st ed.,
(1.August 2008)
I
Guido Krüger, Heiko Hansen: Handbuch der
”
Java-Programmierung“, Addison-Wesley, 5.Auflage,
2007
I
Oracle, Java-API
Begriffsklärung
Problemstellung
Netzwerkkommunikation
RMI
Grundlegende Technik
Serialisierung
Sicherheit
Implementierung
Anforderungen
Interfaces
Beispiel
Observer-Pattern
Erweiterung für RMI
Fehlerquellen
Quellen
31 / 31
Herunterladen