Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Remote Methode Invocation (RMI) ETIS SS05. ETIS SS05 Nadine FröhlichRMI 2 Gliederung Motivation Ablauf der Kommunikation Erstellung Remote-Service Zusammenfassung.

Ähnliche Präsentationen


Präsentation zum Thema: "Remote Methode Invocation (RMI) ETIS SS05. ETIS SS05 Nadine FröhlichRMI 2 Gliederung Motivation Ablauf der Kommunikation Erstellung Remote-Service Zusammenfassung."—  Präsentation transkript:

1 Remote Methode Invocation (RMI) ETIS SS05

2 ETIS SS05 Nadine FröhlichRMI 2 Gliederung Motivation Ablauf der Kommunikation Erstellung Remote-Service Zusammenfassung

3 ETIS SS05 Nadine FröhlichRMI 3 Motivation I RMI: Remote Method Invokation Möglichkeit verteilte Java-Anwendungen zu erstellen –Ermöglicht Methodenaufruf auf Java-Objekten, in anderer JVM auf selben oder anderem Rechner –Fast nahtlos, d.h. kaum Aufwand, um Klasse RMI-fähig zu machen Architektur zunächst nur zur Kommunikation zwischen Java- Anwendungen eingesetzt –Client und Server in Java programmiert –Seit JDK 1.1 Bestandteil der Standardbibliotheken von Java, d.h. auf allen Plattformen nutzbar, auf denen Java- Laufzeitumgebung verfügbar

4 ETIS SS05 Nadine FröhlichRMI 4 Motivation I Problem: –Aufruf eines (Service) Objektes in entfernter JVM nötig (auf selben oder entfernten Rechner) –Folgendes funktioniert nicht (in Klasse Client): Maschine m = –Programmierung auf Socket- oder Protokollebene: aufwändig, fehleranfällig, häufig nicht wiederverwendbar Client heap Server heap Client- objekt ? ? Service- objekt

5 ETIS SS05 Nadine FröhlichRMI 5 Ablauf der Kommunikation I RMI ermöglicht Finden + Aufruf von Objekten in entfernter JVM, dabei: –keine Unterscheidung zwischen lokalen und entfernten Methodenaufrufen, d.h. transparente Verteilung –Helper Objekte übernehmen Kommunikation –Ablauf: Client heapServer heap Service- helper Service- objekt 2. Informationen zum Methodenaufruf 1. MethodenAufruf() 3. MethodenAufruf() 6. Ergebnis an Client 5. Übermitteln gepacktes Ergebnis 4. Ergebnisrückgabe Client- helper Client- objekt

6 ETIS SS05 Nadine FröhlichRMI 6 Ablauf der Kommunikation II 1.Methodenaufruf –Client ruft Methode auf Client Helper (Stub) auf, als ob dieser aktueller Service wäre –Client Helper Proxy tut so, als wäre er Service, den Client aufrufen will hat selbe Methoden wie Remote Service, aber keine Logik Informationen zum Methodenaufruf –Client Helper kontaktiert Server, transferiert Informationen über Methodenaufruf (Methodenname, Argumente) und wartet auf Antwort vom Server

7 ETIS SS05 Nadine FröhlichRMI 7 Ablauf der Kommunikation III 3.Methodenaufruf –Service Helper (Skeleton) nimmt Anfrage entgegen und ruft wirkliche Methoden auf richtigem Service-Objekt auf 4.Ergebnisrückgabe –Service Helper bekommt Rückgabewert vom Service-Objekt 5.Übermitteln gepacktes Ergebnis –Service Helper packt + verschickt Ergebnis an Client-Helper 6.Ergebnis an Client –Client-Helper entpackt Informationen und gibt Werte an Client Objekt zurück

8 ETIS SS05 Nadine FröhlichRMI 8 Erstellung Remote-Service 1.Remote-Interface erstellen –Remote Interface definiert Methoden, die Client entfernt aufrufen kann –Stub und Service implementieren es 2.Remote Implementierung erstellen –Implementierung macht eigentliche Arbeit (Service) 3.Stub (Client Helper) + Skeleton (Service Helper) generieren –automatisch aus Implementierung mit rmic generiert 4.RMI Registry starten –Wie Telefonbuch, hier erfragt Client den Stub 5.Remote Service starten –Service instanziert + in Registry registriert, dadurch ist er für Clients verfügbar

9 ETIS SS05 Nadine FröhlichRMI 9 Remote-Interface erstellen Interface muss von java.rmi.Remote erben Alle Methoden müssen RemoteException werfen, da bei entfernten Aufrufen Fehler auftreten können Argumente und Rückgabewerte müssen primitive Datentypen oder serialisierbar sein import java.rmi.*; public interface IRemote extends Remote{ public String echo() throws RemoteException; }

10 ETIS SS05 Nadine FröhlichRMI 10 Remote Implementierung erstellen Remote Interface implementieren von UnicastRemoteObject erben public class RemoteImpl extends UnicastRemoteObject implements IRemote {… Service muss in RMI Registry registriert werden try{ IRemote service = new RemoteImpl(); Naming.rebind(ServiceName, service); } catch (Exception ex) {…

11 ETIS SS05 Nadine FröhlichRMI 11 Helper generieren, RMIRegistry + Service starten rmic (RMI Compiler) generiert aus Serviceimplementierung Stub + Skeleton % rmic RemoteImpl Rmiregistry starten % rmiregistry Service starten % java KlasseInDerRegistrierung

12 ETIS SS05 Nadine FröhlichRMI 12 Clientaufruf Client benötigt Stub, auf ihm werden Methoden aufgerufen Client macht ein Lookup in RMIRegistry und sucht den Stub anhand des Namen IRemote service = (IRemote) Naming.lookup (rmi:// /ServiceName); Client heap Server heap StubSkeleton Service- objekt ServiceName StubService1 HelloWorld StubService2 … … 2. gefundener Stub 1. lookup() 3. methodenAufruf() Client- objekt

13 ETIS SS05 Nadine FröhlichRMI 13 Hintergrund: Proxy Pattern ClientSubjekt operation() … Proxy operation() … EchtesSubjekt operation() … echtesSubjekt.operation(); … echtesSubjekt

14 ETIS SS05 Nadine FröhlichRMI 14 Zusammenfassung RMI verbirgt Tatsache, dass Methode remote (entfernt) aufgerufen wird –entfernte Methoden wie normale Methoden, in Client-JVM laufend, aufgerufen (mittels Stub (Proxy)) –RMI gibt Infrastruktur vor (inkl. lookup Service - nutzt Client zum Finden und Zugriff auf Remote-Objekte) –Netzwerk oder I/O Code nicht selber zu schreiben Stub und Skeleton –kommunizieren über Protokoll Java Remote Method Protocol (JRMP) – oder IIOP (Internet Inter-ORB Protocol aus Corba) –generiert mit rmic –neuere Java Versionen erfordern kein explizites Skeleton-Objekt (Methoden dynamisch aufgerufen)

15 ETIS SS05 Nadine FröhlichRMI 15 Literatur Gamma, E., Helm, R., Jonson, R., Vlissides, J., Entwurfsmuster, Addison-Wesley, Bonn, 1996 Freeman, E., Freeman, E., Head First Design Patterns, O Reilly, 2004 Wutka, M. J2EE Developers Guide, Markt+Technik, _Method_Invocation/3.html

16 ETIS SS05 Nadine FröhlichRMI 16 Corba vs. RMI CORBA: –Architektur für Kommunikation zwischen Anwendungen verschiedener Programmiersprachen (für die CORBA-Implementierung verfügbar) –Zusätzlicher Lernaufwand, da Server-Schnittstelle in Interface Definition Language (IDL) zu spezifizieren RMI –speziell für Verwendung in Java konzipiert, d.h. kann nur dort verfügbare Features nutzen –konnte von Anfang an Objekte als Wert übergeben (über Objekt-Serialisierung) –mit J2SE verfügbar und kostenlos Die Grenzen zwischen RMI und CORBA verschwimmen zunehmend, –RMI kann CORBA zugrunde liegendes IIOP-Protokoll zur Kommunikation nutzen –CORBA hat biete jetzt Mechanismus zur Übergabe von Objekten per Wert –Damit möglich, aus RMI Methoden in nicht in Java implementierten Objekten aufzurufen bzw. mit CORBA serverseitige RMI-Objekte anzusprechen.


Herunterladen ppt "Remote Methode Invocation (RMI) ETIS SS05. ETIS SS05 Nadine FröhlichRMI 2 Gliederung Motivation Ablauf der Kommunikation Erstellung Remote-Service Zusammenfassung."

Ähnliche Präsentationen


Google-Anzeigen