Remote Method Invocation

Ähnliche Dokumente
Java-Programmierung. Remote Method Invocation - RMI

Remote Method Invocation

9. Remote Method Invocation Grundlagen der Programmierung II (Java)

-Testen verteilter Anwendungen

Mobile und Verteilte Datenbanken

Java RMI Remote Method Invocation

Mobile und Verteilte Datenbanken

Verteilte Systeme. Verteilte Objektorientierte Systeme I. Prof. Dr. Oliver Haase

Client/Server-Programmierung

Client/Server-Programmierung

Musterlösung Übungsblatt 2 Netzprogrammierung WS 05/06

Anleitung. Ein einfaches RMI-Beispiel. (ab Java 5.0) c Y. Pfeifer. (Juni 2014)

8.1.5 Java RMI Remote Method Invocation

4. Informatiktag NRW Projekt online Shop. Barbara Leipholz Schumacher Euregio Kolleg, Würselen

Remote- und Server-Programmierung. Dr. Wolfgang Süß Thorsten Schlachter

Remote Method Invocation (RMI)

Warum EJB Technologie (1)?

7.1.1 Grundzüge der Fernaufruf-Implementierung

Programmieren II. Remote-Programmierung. Institut für Angewandte Informatik

Themen. Web Service - Clients. Kommunikation zw. Web Services

RMI Server und Client

KAPITEL 1 RMI Verteilte Programmierung unter JAVA von Anja Austermann

Grundlagen verteilter Systeme

Java in Verteilte Systeme - RMI

36.2 Example ClassLoader Example Appletviewer

Klausurvorbereitung VS1 (Prof. Brecht) (B0rg Edition)

Java in Verteilte Systeme

5A Kooperation: Lösungen

Client/Server-Programmierung WS2007/08. EJB/JSP: Schritt-für-Schritt Anleitung

Übungen zu Softwaretechnik

3 Objektorientierte Konzepte in Java

10.1 Remote Method Invocation (RMI)

Remote Method Invocation

JAVA Remote Method Invocation JRMP Tutorial

Überblick. Middleware - Übung. Model-View-Controller. Entwurfsmuster (Design Patterns)

Schritt 4: Hallo Enterprise Bean

Anwendung eines Enterprise Java Beans

Java - Programmierung - Objektorientierte Programmierung 1

JAVA Remote Method Invocation RMI/IIOP Tutorial

Beispiel: Methode mit einem Fehler. Diese Methode wird problematisch, wenn von außen eine Dauer von 0 Sekunden angegeben wird, etwa im Aufruf

Einführung in die Programmierung Blockkurs Java

Web-Services Implementierung mit Java

Netzprogrammierung: Java RMI - Remote Method Invocation (Teil 2)

Algorithmen und Datenstrukturen

3 Objektorientierte Konzepte in Java

CORBA. Beispiel einer Middleware-Plattform. Christian Fass WS 2013/14 Software Engineering: Basistechnologien

Definition Web Service

Große Übung Praktische Informatik 1

CORBA. Eine kurze Einführung. Common Object Request Broker Architecture. Ying Lu

CORBA-Konzept. Ziele. Common Object Request Broker Architecture CORBA. Plattformunabhängige Kommunikation Transparente Verteilung von Objekten

Variablen manipulieren per JDI

Auszug aus JAX-WS Folien

Java: Vererbung. Teil 3: super()

39 Object Request Brokers. 40 Components of an ORB Stubs and Skeletons Stub

Netzprogrammierung Verteilte Objekte in Java RMI II

Programmiermethodik. Übung 13

Programmieren in Java

J2EEKurs. Enterprise JavaBeans Einführung. Peter Thiemann. Sommercampus J2EEKurs, Freiburg, Germany, Universität Freiburg, Germany

Netzprogrammierung Verteilte Objekte in Java RMI II

Modul Software Komponenten 10 Komponentenarchitektur

Softwareentwicklung in verteilten Umgebungen, Teil 5 Middleware (Coulouris et al., Kapitel 5) Dieter Schmalstieg

Innere Klassen in Java

Java-Schulung Grundlagen

Netzwerkprogrammierung

Datum, Uhrzeit: , Uhr Matrikelnummer:... Semester: INbac2 Prüfer: Prof. Meixner Note:...

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.

Web-Services Implementierung

Client/Server-Systeme

Java Remote Methode Invocation - RMI Praxis

Applet Firewall und Freigabe der Objekte

Eclipse Equinox als Basis für Smart Client Anwendungen. Christian Campo, compeople AG, Java Forum Stuttgart 2007

Java Einführung Methoden in Klassen

TCP/IP Programmierung. C# TimeServer Java6 TimeClient

Universität Karlsruhe (TH)

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 14/15. Kapitel 11. Fehler und Ausnahmen 1

von Anja Austermann Drag and Drop

Universität Karlsruhe (TH)

Übungsblatt 2: Kommunikation und XSS

II.1.1. Erste Schritte - 1 -

Szenario 3: Service mit erweiterter Schnittstelle

Asynchrone Webservices mit Axis 1.x in Java

Erweitern Sie ihren Tomcat um das AXIS-Framework und machen Sie ihn damit bereit für den Einsatz von Web Services:

Programmierung verteilter Systeme

Multiuser Client/Server Systeme

Kap. 3 Verteilte Objektverwaltung

IT in der Arztpraxis Technisches Handbuch zum Kodierassistenten

Transkript:

Remote Method Invocation Spezielle Technik aus dem Java-Umfeld Ausführung von Methoden auf einem entfernten Rechner Analogon zum RPC (Remote Procedure Call) Zweck: Objekte in verschiedenen Java-VMs Aufruf einer Methode eines remote -Objektes Programmieren wie mit lokalen Objekten wenig Programmier-Overhead verteilte Applikationen ETH Zürich Java RMI Seite 1

Architektur Netzwerk Client-Seite Server-Seite lookup 2 Namensdienst call 3 (re)bind 1 result 4 Client Stub Skeleton Server ETH Zürich Java RMI Seite 2

Server und Client Server: stellt Objekte zum entfernten Aufruf bereit (Export) ist mit einem Ort (Internet-Adresse) assoziiert Client: muss Typ der vom Server exportierten Objekte kennen muss Ort des Servers kennen ETH Zürich Java RMI Seite 3

Namensdienst Gestattet Clients das Auffinden von Objekten,die von Servern bereitgestellt werden Server-Seite: //entferntes Objekt anmelden (existierende Einträge überschreiben) Naming.rebind( ObjectName, RemoteObject) //entferntes Objekt abmelden Naming.unbind( ObjectName, RemoteObject) Client-Seite: //Referenz (Stub) des entfernten Objektes erfragen Naming.lookup( rmi://some.server.com/objectname ) ETH Zürich Java RMI Seite 4

Namensdienst: Details Katalog von verfügbaren Remote-Objekten enthält Referenzen auf Remote-Objekte Referenzen über Namen identifizierbar Namen sind wie URLs zusammengesetzt Naming-Methoden: void bind(string url, Remote reference) rmi://rechner:port/objektname void rebind(string url, Remote reference) void unbind(string url) String[] list(string url) Remote lookup(string url) ETH Zürich Java RMI Seite 5

RMI-Benutzung Schritt 1: Implementierung der Server-Seite - Basis-Interface und -Implementation - Server-Implementation (Schritt 2: Stub und Skeleton generieren) - automatische Generierung mittels rmic - Mit Java 1.5 und neuer nicht mehr nötig Schritt 3: Implementierung der Client-Seite - Anfrage im Repository nach dem entfernten Server - Methoden-Aufruf wie auf dem lokalen Objekt Schritt 4: Namensdienst aktivieren - Starten des Namensdienstes mit rmiregistry Schritt 6: Erst Server, dann Client starten ETH Zürich Java RMI Seite 6

RMI-Beispiel: Objekt Deklaration der entfernt zugreifbaren Methoden in einem Basis-Interface // MyObject.java import java.rmi.*; interface MyObject extends Remote { public void do_something() throws RemoteException, UserException; Implementation // MyObjectImpl.java import java.rmi.*; import java.rmi.server.*; Parallele Ausführung von Methoden mit Threads! public class MyObjectImpl extends UnicastRemoteObject implements MyObject { public MyObjectImpl() throws RemoteException { super(); public do_something() throws RemoteException, MyException { System.out.println("Hello RMI World!"); throw new MyException("Hello RMI Execptions"); ETH Zürich Java RMI Seite 7

Benutzer-definierte Exception RMI-Beispiel: Exception / Server // MyException.java public class MyException extends Exception { public MyException(String text) { super(text); ; Server // Server.java import java.rmi.*; import java.rmi.server.*; public class Server { public static void main (String args[]) { try { MyObjectImpl obj = new MyObjectImpl(); Naming.rebind( MyObject, obj); catch (Exception e) { e.printstacktrace(); ETH Zürich Java RMI Seite 8

RMI-Klassen und -Interfaces Klassen Interfaces java.rmi.remoteobject java.rmi.remote java.rmi.unicastremoteobject MyObject extends implements MyObjectImpl ETH Zürich Java RMI Seite 9

(RMI-Beispiel: Stub und Skeleton) Für ältere Java-Versionen (vor 1.5) werden Stub und Skeleton wie folgt erzeugt: MyObjectImpl.java compilieren Für automatische Erzeugung wird Tool rmic verwendet > rmic MyObjectImpl Dabei entstehen folgende Klassen: MyObjectImpl_Stub.class - Stub für die Client-Seite MyObjectImpl_Skel.class - Skeleton für die Server-Seite ETH Zürich Java RMI Seite 10

RMI-Beispiel: Namensdienst Verzeichnis der zur Verfügung gestellten entfernten Objekte spezielles Tool rmiregistry: > rmiregistry <port> & Namensdienst wird gestartet Portnummer ist ein optionaler Parameter (per Definition wird 1099 eingestellt). Fehlermeldung falls Port bereits von einem anderen Prozess verwendet wird ETH Zürich Java RMI Seite 11

RMI-Beispiel: Client Keine zusätzliche Vererbung von Interfaces und Objektklassen nötig Client findet den Server, indem er sich an den Namensdienst in dem Server- Rechner wendet Bei Implementation assoziierter Name wird für die Nachfrage benutzt import java.rmi.*; public class Client { public static void main (String args[]) { try { MyObject obj = (MyObject)Naming.lookup( rmi://some.server.com:port/myobject ); object.do_something(); catch (Exception e) { System.out.println(e) ETH Zürich Java RMI Seite 12

Zusammenfassung RMI bietet Methode zum Verstecken von Verteilung vereinfacht das Programmieren aber: neue Fehlerquellen + Exceptions (fast) gleiche Behandlung von lokalen und Remote-Objekten Remote-Objekt fungiert als Server (exportiert Methoden) Client kann über ein Interface auf das Remote-Objekt zugreifen RMI-Paket bietet einfachen Naming-Service Parallele Ausführung von Methoden mittels Threads (Synchronisation!) ETH Zürich Java RMI Seite 13