Remote Methode Invocation (RMI)

Slides:



Advertisements
Ähnliche Präsentationen
der Universität Oldenburg
Advertisements

Seminar Internet-Technologien : Java
C ommon O bject R equest B roker A rchitecture
DI Christian Donner cd (at) donners.com
Basis-Architekturen für Web-Anwendungen
© 2003 Patrick Brunner Spontane Vernetzung – Jini 9. Januar 2004 Spontane Vernetzung Patrick Brunner.
WS06/07Prof. Dr. Andreas Schmietendorf1 Programmierung von Client/Server- Anwendungen Übersicht zur Vorlesung.
Objektorientierte Programmierung
Internetzugriff mit Strings und Streams
Ausnahmen HS Merseburg (FH) WS 06/07.
Stephan Bury  Pascal Busch  Bita Gerami
Pascal Busch, WWI00B – Vergleich CORBA vs. Web Services hinsichtlich der Applikationsintegration Web Services vs CORBA Web Services vs CORBA Ein Vergleich.
Threads Richard Göbel.
Java: Objektorientierte Programmierung
Java: Referenzen und Zeichenketten
Komponentenbasierter Taschenrechner mit CORBA
MD 4/02 Hello World from CORBA ein erster Überblick.
Cassey - Common Answer Set Evaluation sYstem Jean Gressmann Benjamin Kaufmann Robert Lenk.
Ein Beispiel in Java.
Reflection API ETIS SS04.
Das Build-Tool ANT ETIS SS05. ETIS SS05 - Nadine FröhlichANT 2 Gliederung Motivation Build - Datei –Allgemeiner Aufbau –Project –Target –Task –Properties.
XDoclet ETIS SS05.
Das Test-Framework JUnit
Reflection API ETIS SS05.
Programmieren mit JAVA
JAVA RMI.
-LABORPRAKTIKUM- SOMMERSEMESTER 2005
Command Pattern Karola Schäuble,
Entwurfsmuster EDV Entwurfsmuster.
Abstrakte Klassen, Interface
DVG Klassen und Objekte
EDV Parallelprogrammierung1 Parallelprogrammierung mit JAVA.
Common Object Request Broker anhand eines Beispiels Aufgabestellung ( Ein Konto wird von einem Server verwaltet. Der Stand des Kontos wird.
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Was umfaßt die CORBA Core Spezifikation? Welche zusätzlichen Komponenten muß ein ORB Produkt beinhalten? Core: CORBA Objekt Modell CORBA Architektur OMG.
University of Applied Sciences Übung Objektorientierte Programmierung II Dipl.-Inf. (FH) Markus Vogler.
Netzwerkprogrammierung
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
Welchen Problemen ist man bei heterogener, verteilter Programmierung ausgesetzt? Hardware: nicht einheitliche, inkompatible Systeme, verschiedene Leistungsfähigkeit.
Beschreiben Sie das Szenario wenn ein ORB einen Server aktiviert und eine Objektimplementation aufruft. Activate Server impl_is_ready Activate Object (GetID.
Stellen Sie nochmals statischen und dynamischen Methodenaufruf gegenüber.
Testtechniken-Praktikum WS 2005/06 1 Testen mit Mock- Objekten Andreas Höfer Dr. Matthias Müller.
7.1.5 Java RMI – Remote Method Invocation
Office in Java 2. Info-Point Urs Frei.
Mag. Andreas Starzer weloveIT – EDV Dienstleistungen
Learning By Doing Ausnahmebehandlung Exceptions (Ausnahmebehandlung) Typische Fehlverhalten zur Laufzeit: s. Buch S. 287ff -Verwendung von null-Objekten.
Parallele Programmierung in Java
Client-Server-Modell
Voyager Eigenschaften/Vorzüge Universalität: –ROI-Modelle: CORBA, RMI, DCOM –verschiedene Namens-, Verzeichnisdienste Nachrichtentypen: synchron, oneway,
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
Middleware in Java vieweg 2005 © Steffen Heinzl, Markus Mathes Kapitel 6: Verteilte Objekte durch RMI.
Einführung in die Programmierung mit Java
Benutzerdefinierte Tags
NET Remoting.Net („dotnet“) :von Microsoft eingeführte Plattform für verteilte Anwendungen, virtuelle Maschine für die verteilte Ausführung von.
-LABORPRAKTIKUM- SOMMERSEMESTER 2005
Java Server Pages Technologie zur Erzeugung dynamischer Webseiten basierend auf Java-Servlets Blockseminar Wintersemester 2001/2002Jochen Pfeiffer Seite.
MD 4/02 CORBA Static/Dynamic Invocation Interface (SII/DII), Interface Repository.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Thomas H. Kolbe Einführung in die Programmierung mit Java 9. Vorlesung WS 2001/2002.
Entwurfsmuster (Design Pattern)
Reflection API1 Motivation Reflection API Core Reflection API: java.lang.reflect Seit JDK 1.1 integraler Bestandteil der Java- Klassenbibliothek Ermöglicht:
Web Services Spezielle Methoden der SWT Liste V – WS 2008/2009 Christian Boryczewski.
-LABORPRAKTIKUM- SOMMERSEMESTER 2005
Abstrakte Klassen und das Interface-Konzept
Rusch Philipp, Spiegel Philipp, Sieber Michael, Ucar Sahin, Wetzel Markus.
Vortrag Einführung in AspectJ. Gliederung 1 Einleitung 2 Querschnittsfunktionalitäten in AspectJ 2.1 Sprachelemente 3 Beispiel 4 Join Point Modell 5 Weaving.
Aufbau Integrierter Informationssysteme Verteilte Objektsysteme am Beispiel von CORBA Falk Ritschel, Stefan Springer, Falko Steponat Martin-Luther-Universität.
Dr. Wolfram Amme, Virtuelle Vererbung, Informatik II, FSU Jena, SS Auflösung von Konflikten bei Mehrfachvererbung Umbenennung mehrdeutiger Methoden.
Vs Java RMI – Remote Method Invocation ( ) (
Tutorstunde 10.
Remote Method Invocation
 Präsentation transkript:

Remote Methode Invocation (RMI) ETIS SS05

Gliederung Motivation Ablauf der Kommunikation Erstellung Remote-Service Zusammenfassung RMI ETIS SS05 Nadine Fröhlich

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 RMI ETIS SS05 Nadine Fröhlich

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 = <object in another heap> Programmierung auf Socket- oder Protokollebene: aufwändig, fehleranfällig, häufig nicht wiederverwendbar ? Client- objekt Service- objekt ? Client heap Server heap RMI ETIS SS05 Nadine Fröhlich

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: 1. MethodenAufruf() 3. MethodenAufruf() 2. Informationen zum Methodenaufruf Client- objekt Client- helper Service- helper Service- objekt 5. Übermitteln gepacktes Ergebnis 6. Ergebnis an Client 4. Ergebnisrückgabe Client heap Server heap RMI ETIS SS05 Nadine Fröhlich

Ablauf der Kommunikation II 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 RMI ETIS SS05 Nadine Fröhlich

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

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

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; } RMI ETIS SS05 Nadine Fröhlich

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) {… RMI ETIS SS05 Nadine Fröhlich

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

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://127.0.0.1/ServiceName“); 3. methodenAufruf() Client- objekt Service- objekt Stub Skeleton 2. gefundener Stub 1. lookup() ServiceName HelloWorld … StubService1 StubService2 … Client heap Server heap RMI ETIS SS05 Nadine Fröhlich

Hintergrund: Proxy Pattern Client Subjekt operation() … EchtesSubjekt Proxy … echtesSubjekt.operation(); operation() … echtesSubjekt operation() … RMI ETIS SS05 Nadine Fröhlich

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) RMI ETIS SS05 Nadine Fröhlich

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 Developer‘s Guide, Markt+Technik, 2002 http://www.dpunkt.de/java/Programmieren_mit_Java/Remote_Method_Invocation/3.html RMI ETIS SS05 Nadine Fröhlich

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. RMI ETIS SS05 Nadine Fröhlich