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