Client/Server-Programmierung

Größe: px
Ab Seite anzeigen:

Download "Client/Server-Programmierung"

Transkript

1 Client/Server-Programmierung WS 2016/2017 Betriebssysteme / verteilte Systeme [email protected] Tel.: 0271/ , Büro: H-B 8404 Stand: 18. November 2016 Betriebssysteme / verteilte Systeme Client/Server-Programmierung (1/15) i Client/Server-Programmierung WS 2016/ Grundlagen: Wiederholung Betriebssysteme / verteilte Systeme Client/Server-Programmierung (1/15) 20

2 1 Grundlagen: Wiederholung... Inhalt Architekturmodelle Zeit und Zustand in verteilten Systemen Middleware Java RMI Betriebssysteme / verteilte Systeme Client/Server-Programmierung (1/15) Architekturmodelle Client/Server-Modell Asymmetrisches Modell: Server stellen Dienste bereit, die von (mehreren) Clients genutzt werden können Server verwalten i.a. Ressourcen (zentralisiert) Client Aufruf Aufruf Server Ergebnis Server Ergebnis Client Server kann selbst wieder als Client agieren Prozeß Rechner Häufigstes Modell für verteilte Anwendungen (ca. 80 %) Betriebssysteme / verteilte Systeme Client/Server-Programmierung (1/15) 22

3 1.1 Architekturmodelle... Client/Server-Modell... I.A. nebenläufige Anfragen mehrerer Client-Prozesse an den Server-Prozeß Start Client Ende Anfrage (request) Antwort (reply) Zeit Server Client Beispiele: Dateiserver, WWW-Server, DB-Server, DNS-Server,... Betriebssysteme / verteilte Systeme Client/Server-Programmierung (1/15) Architekturmodelle... n-tier-architekturen Verfeinerungen der Client/Server-Architektur Modelle zur Verteilung einer Anwendung auf die Knoten einer verteilten Systems Vor allem bei Informationssystemen verwendet Tier (engl. Schicht / Stufe) kennzeichnet einen unabhängigen Prozeßraum innerhalb einer verteilten Anwendung Prozeßraum kann, muß aber nicht physischem Rechner entsprechen mehrere Prozeßräume auf einem Rechner möglich Betriebssysteme / verteilte Systeme Client/Server-Programmierung (1/15) 24

4 1.1 Architekturmodelle... 2-Tier-Architektur Client- und Server-Tier Keine eigene Tier für die Anwendungslogik Client Tier Server Tier Präsentation Anwendungslogik (Verteilung auf Client und Server Tier variiert) Datenhaltung Vorteil: einfach, performant Nachteil: schwer wartbar, schlecht skalierbar Betriebssysteme / verteilte Systeme Client/Server-Programmierung (1/15) Architekturmodelle... 3-Tier-Architektur Client Tier Präsentation Middle Tier Anwendungslogik Server Tier Datenhaltung Standard-Verteilungsmodell für einfache Web-Anwendungen: Client-Tier: Web-Browser zur Anzeige Middle-Tier: Web-Server mit Servlets / JSP / ASP Server-Tier: Datenbank-Server Vorteile: Anwendungslogik zentral administrierbar, skalierbar Betriebssysteme / verteilte Systeme Client/Server-Programmierung (1/15) 26

5 1.1 Architekturmodelle... (Animierte Folie) Beispiel: typische Internet-Anwendung DMZ Intranet Web Client 01 Web Client Internet Firewall Web Server Firewall Web Server Anwen dungs Server Daten bank Server Tier 1 Tier 2 Tier 3 Tier 4 Betriebssysteme / verteilte Systeme Client/Server-Programmierung (1/15) Zeit und Zustand in verteilten Systemen Was ist der Unterschied zwischen einem verteilten System und einem Ein-/Mehrprozessorsystem? Ein- bzw. Mehrprozessorsystem: nebenläufige Prozesse: pseudo-parallel durch time sharing bzw. echt parallel globale Zeit: alle Ereignisse in den Prozessen lassen sich zeitlich eindeutig ordnen globaler Zustand: zur jeder Zeit kann ein eindeutiger Zustand des Systems angegeben werden Verteiltes System echte Parallelität keine globale Zeit kein eindeutiger globaler Zustand Betriebssysteme / verteilte Systeme Client/Server-Programmierung (1/15) 28

6 1.2 Zeit und Zustand in verteilten Systemen... Globale Zeit Auf Ein-/Mehrprozessorsystem jedem Ereignis kann (zumindest theoretisch) ein eindeutiger Zeitstempel derselben lokalen Uhr zugeordnet werden bei Mehrprozessorsystemen: Synchronisation am gemeinsamen Speicher In verteilten Systemen: viele lokale Uhren (eine pro Knoten) exakte Synchronisation der Uhren (prinzipiell!) nicht möglich Reihenfolge von Ereignissen auf verschiedenen Knoten nicht (immer) eindeutig zu ermitteln (vgl. spezielle Relativitätstheorie) Betriebssysteme / verteilte Systeme Client/Server-Programmierung (1/15) Zeit und Zustand in verteilten Systemen... Eine Auswirkung der Verteiltheit Szenario: zwei Prozesse beobachten zwei andere Prozesse x y z Beobachter A x y Prozess 1 Prozess 2 Beobachter B z z x y Die Beobachter sehen die Ereignisse ggf. in unterschiedlicher Reihenfolge! Problem z.b., falls die Beobachter replizierte Datenbanken und die Ereignisse Datenbank-Updates sind Replikate sind nicht mehr konsistent! Betriebssysteme / verteilte Systeme Client/Server-Programmierung (1/15) 30

7 1.2 Zeit und Zustand in verteilten Systemen... Globaler Zustand: Ein Beispiel zur Motivation Szenario: Peer-to-Peer-Anwendung, Prozesse senden sich gegenseitig Aufträge Frage: wann kann die Anwendung terminieren? Falsche Antwort: wenn kein Prozeß mehr einen Auftrag bearbeitet Grund: Aufträge können noch in Nachrichten unterwegs sein! Prozeß 1 Prozeß 2 Auftrag idle idle Weitere Anwendungen: verteilte Garbage-Collection, verteilte Deadlock-Erkennung,... Betriebssysteme / verteilte Systeme Client/Server-Programmierung (1/15) Zeit und Zustand in verteilten Systemen... Wie bestimmt sich der Gesamtzustand eines verteilten Prozeßsystems? naiv: Summe der Zustände aller Prozesse (falsch!) Zwei Aspekte müssen beachtet werden: Nachrichten, die noch in Übertragung sind müssen mit in den Zustand aufgenommen werden Fehlen einer globalen Zeit ein Globalzustand zur Zeit t kann nicht definiert werden! Zustände der Prozesse beziehen sich immer auf lokale (und damit unterschiedliche) Zeiten Frage: Bedingung an die lokalen Zeiten? konsistente Schnitte Betriebssysteme / verteilte Systeme Client/Server-Programmierung (1/15) 32

8 1.3 Middleware Verteilte Anwendung (VA) VA Komponente VS Knoten Netz VA Komponente VS Knoten Verteiltes System (VS) Verteilte Anwendung (VA) VA Komponente Middleware VS Knoten Netz VA Komponente Middleware VS Knoten Verteiltes System (VS) VA nutzt VS für Kommunikation zwischen ihren Komponenten VSe bieten i.a. nur einfache Kommunikationsdienste an direkte Nutzung: Netzwerkprogrammierung Middleware bietet intelligentere Schnittstellen verbirgt Details der Netzwerkprogrammierung Betriebssysteme / verteilte Systeme Client/Server-Programmierung (1/15) Middleware... Middleware ist Schnittstelle zwischen verteilter Anwendung und verteiltem System Ziel: Verbergen der Verteilungsaspekte vor der Anwendung u.a. Zugriffs- und Orts-Transparenz Middleware kann auch Zusatzdienste für Anwendungen bieten starke Unterschiede bei existierender Middleware Unterscheidung: kommunikationsorientierte Middleware (nur) Abstraktion von der Netzwerkprogrammierung anwendungsorientierte Middleware neben Kommunikation steht Unterstützung verteilter Anwendungen im Mittelpunkt Betriebssysteme / verteilte Systeme Client/Server-Programmierung (1/15) 34

9 1.3.1 Kommunikationsorientierte Middleware Fokus: Bereitstellung einer Kommunikationsinfrastruktur für verteilte Anwendungen Aufgaben: Kommunikation Behandlung der Heterogenität Fehlerbehandlung Anwendung Kommunikationsorientierte Middleware Betriebssystem / verteiltes System Betriebssysteme / verteilte Systeme Client/Server-Programmierung (1/15) Kommunikationsorientierte Middleware... Entfernter Prozeduraufruf (RPC, Remote Procedure Call) Ermöglicht einem Client den Aufruf einer Prozedur in einem entfernten Server-Prozeß Client Prozeß y = P(x); Eingabeparameter Resultate P(a) {... return b; Server Prozeß Kommunikation nach Anfrage / Antwort-Prinzip Entfernter Methodenaufruf (RMI, Remote Method Invocation) Ermöglicht einem Objekt, Methoden eines entfernten Objekts aufzurufen Prinzipiell sehr ähnlich zu RPC Betriebssysteme / verteilte Systeme Client/Server-Programmierung (1/15) 36

10 1.3.1 Kommunikationsorientierte Middleware... Gemeinsame Grundkonzepte entfernter Aufrufe Client und Server werden durch Schnittstellendefinition entkoppelt legt Namen der Aufrufe, Parameter und Rückgabewerte fest Einführung von Client-Stubs und Server-Stubs (Skeletons) als Zugriffsschnittstelle werden automatisch aus Schnittstellendefinition generiert IDL-Compiler, Interface Definition Language sind verantwortlich für Marshalling / Unmarshalling sowie für die eigentliche Kommunikation realisieren Zugriffs- und Ortstransparenz Betriebssysteme / verteilte Systeme Client/Server-Programmierung (1/15) Kommunikationsorientierte Middleware... Funktionsweise der Client- und Server-Stubs (RPC) y=p(x) Client Prozeß P(a) { Client Stub return b; Server Skeleton while (true) { Argumente a in receive(m1); Nachricht m1 packen client=sender(m1); send(server, m1); Argumente x aus Nach richt m1 auspacken receive(server, m2) ; y = P(x) ; Ergebnis b aus Nach richt m2 auspacken Server Prozeß Ergebnis y in Nach richt m2 packen send(client, m2); P(a) {... return b; Betriebssysteme / verteilte Systeme Client/Server-Programmierung (1/15) 38

11 1.3.1 Kommunikationsorientierte Middleware... Basis von RMI: Das Proxy-Pattern Client arbeitet mit Stellvertreterobjekt (Proxy) des eigentlichen Serverobjekts Proxy und Serverobjekt implementieren dieselbe Schnittstelle Client kennt / nutzt lediglich diese Schnittstelle <<interface>> Schnittstelle Client Proxy Objekt Betriebssysteme / verteilte Systeme Client/Server-Programmierung (1/15) Kommunikationsorientierte Middleware... Ablauf eines entfernten Methodenaufrufs Client Rechner Server Rechner Client ruft eine Methode auf Client Proxy Client BS Selbe Schnitt stelle wie beim Objekt Skeleton ruft dieselbe Methode für das Objekt auf Server Skeleton Server BS Objekt Status Methode Schnitt stelle Netzwerk Verpackter Aufruf wird über das Netzwerk weitergegeben (Objekt ID, Methodenname, Parameter) Betriebssysteme / verteilte Systeme Client/Server-Programmierung (1/15) 40

12 1.3.1 Kommunikationsorientierte Middleware... Erstellung eines Client/Server-Programms Server Prozeduren Compiler Server Server Skel. Schnittstellen beschreibung IDL Compiler Client Stubs RPC/RMI Laufzeit Bibliothek Client Programm Compiler Client Gilt prinzipiell für alle Realisierungen entfernten Aufrufe Betriebssysteme / verteilte Systeme Client/Server-Programmierung (1/15) Anwendungsorientierte Middleware Setzt auf kommunikationsorientierter Middleware auf Erweitert diese um: Laufzeitumgebung Dienste Komponentenmodell Anwendungs komponente Dienste Anwendungs komponente Komponentenmodell Laufzeitumgebung Anwendungs komponente Kommunikationsinfrastruktur Betriebssystem / verteiltes System Dienste Betriebssysteme / verteilte Systeme Client/Server-Programmierung (1/15) 42

13 1.3.2 Anwendungsorientierte Middleware... Laufzeitumgebung Ressourcenverwaltung Pooling von Prozessen, Threads, Verbindungen Steuerung der Nebenläufigkeit Verbindungsverwaltung Verbesserung der Verfügbarkeit Replikation, Clustering Sicherheitsmechanismen Authentifizierung und Autorisierung Vertraulichkeit und Integrität Betriebssysteme / verteilte Systeme Client/Server-Programmierung (1/15) Anwendungsorientierte Middleware... Dienste Namensdienst (Verzeichnisdienst) Zuordnung von Namen zu Referenzen (Adressen) Sitzungsverwaltung Transaktionsverwaltung Persistenzdienst z.b. objektrelationaler Mapper (OR-Mapper) Komponentenmodell Komponentenbegriff, Schnittstellenverträge, Laufzeitumgebung Betriebssysteme / verteilte Systeme Client/Server-Programmierung (1/15) 44

14 1.4 Java RMI Java RMI ist fester Bestandteil von Java erlaubt Nutzung entfernter Objekte Wichtige elemente von Java RMI (im Paket java.rmi): entfernte Objektimplementierungen Client-Schnittstellen (Stubs) zu entfernten Objekten Namensdienst, um Objekte im Netz ausfindig zu machen Stub- und Skeleton-Klassen werden automatisch aus Schnittstellendefinition (Java Interface) generiert ab JDK 1.5 dynamisch zur Laufzeit Namensdienst: RMI Registry Verteilte Garbage-Collection Betriebssysteme / verteilte Systeme Client/Server-Programmierung (1/15) Java RMI Hello World mit Java RMI Client JVM Interface interface Hello { String sayhello(); Server JVM Client Klasse class HelloClient {... Hello h;... s = h.sayhello();... Server Klasse class HelloServer implements Hello { String sayhello() { return "Hello World";... Betriebssysteme / verteilte Systeme Client/Server-Programmierung (1/15) 46

15 1.4.1 Hello World mit Java RMI... Ablauf der Entwicklung: 1. Entwurf der Schnittstelle für das Server-Objekt 2. Implementierung der Server-Klasse 3. Entwicklung der Server-Anwendung zur Aufnahme des Server-Objekts 4. Entwicklung der Client-Anwendung mit Aufrufen des Server-Objekts 5. Übersetzen und Starten des Systems Betriebssysteme / verteilte Systeme Client/Server-Programmierung (1/15) 47 Client/Server-Programmierung WS 2016/ Betriebssysteme / verteilte Systeme [email protected] Tel.: 0271/ , Büro: H-B 8404 Stand: 18. November 2016 Betriebssysteme / verteilte Systeme Client/Server-Programmierung (2/15) ii

16 1.4.1 Hello World mit Java RMI... Entwurf der Schnittstelle für das Server-Objekt Wird als normale Java-Schnittstelle spezifiziert Muß von java.rmi.remote abgeleitet werden kein Erben von Operationen, nur Markierung als Remote-Interface Jede Methode muß die Ausnahme java.rmi.remoteexception (oder eine Basisklasse davon) auslösen können Basisklasse für alle möglicherweise auftretenden Fehler im Client, bei der Übertragung, im Server Keine Einschränkungen gegenüber lokalen Schnittstellen aber: semantische Unterschiede (Parameterübergabe!) Betriebssysteme / verteilte Systeme Client/Server-Programmierung (2/15) Hello World mit Java RMI... Hello-World Interface import java.rmi.remote; import java.rmi.remoteexception; public interface Hello extends Remote { String sayhello() throws RemoteException; Marker Schnittstelle, enthält keine Methoden, markiert Interface als RMI Schnittstelle RemoteException zeigt Fehler im entfernten Objekt bzw. bei Kommu nikation an Betriebssysteme / verteilte Systeme Client/Server-Programmierung (2/15) 49

17 1.4.1 Hello World mit Java RMI... Implementierung der Server-Klasse Eine Klasse, die remote nutzbar sein soll, muß: ein festgelegtes Remote-Interface implementieren i.d.r. von java.rmi.server.unicastremoteobject abgeleitet werden definiert Aufrufsemantik: Punkt-zu-Punkt einen Konstruktor besitzen, der RemoteException werfen kann Erzeugung des Objekts muß in try-catch-block stehen Methoden brauchen throws RemoteException nicht nochmals anzugeben ausser sie werfen diese Exception explizit selbst Betriebssysteme / verteilte Systeme Client/Server-Programmierung (2/15) Hello World mit Java RMI... Hello-World Server (1) import java.rmi.*; import java.rmi.server.unicastremoteobject; public class HelloServer extends UnicastRemoteObject implements Hello { public HelloServer() throws RemoteException { super(); public String sayhello() { return "Hello World!"; Remote Methode Betriebssysteme / verteilte Systeme Client/Server-Programmierung (2/15) 51

18 1.4.1 Hello World mit Java RMI... Entwicklung der Server-Anwendung zur Aufnahme des Server-Objekts Aufgaben: Erzeugen eines Server-Objekts Registrieren des Objekts beim Namensdienst unter einem festgelegten, öffentlichen Namen Typischerweise keine neue Klasse, sondern main-methode der Server-Klasse Betriebssysteme / verteilte Systeme Client/Server-Programmierung (2/15) Hello World mit Java RMI... Hello-World Server (2) public static void main(string args[]) { try { HelloServer obj = new HelloServer(); catch (Exception e) { Naming.rebind("rmi://localhost/Hello Server", obj); System.out.println("Error: " + e.getmessage()); e.printstacktrace(); Erzeugen des Server Objekts Registrieren des Server Objekts unter dem Namen "Hello Server" beim Name Server (RMI Registry, lokaler Rechner, Port 1099) Betriebssysteme / verteilte Systeme Client/Server-Programmierung (2/15) 53

19 1.4.1 Hello World mit Java RMI... Entwicklung der Client-Anwendung mit Aufrufen des Server-Objekts Client muß sich zunächst beim Namensdienst über den Namen eine Referenz auf das Server-Objekt holen Type cast auf den korrekten Typ erforderlich Dann: beliebige Methodenaufrufe möglich syntaktisch kein Unterschied zu lokalen Aufrufen Anmerkung: Client kann Remote-Referenzen auch auf anderen Wegen erhalten z.b. als Rückgabewert einer Remote-Methode Betriebssysteme / verteilte Systeme Client/Server-Programmierung (2/15) Hello World mit Java RMI... Hello-World Client import java.rmi.*; public class HelloClient { public static void main(string args[]) { Objektreferenz vom try { Name Server holen Hello obj = (Hello)Naming.lookup("rmi://bspc02/Hello Server"); String message = obj.sayhello(); System.out.println(message); catch (Exception e) {... Aufruf der Methode des entfernten Objekts Betriebssysteme / verteilte Systeme Client/Server-Programmierung (2/15) 55

20 1.4.1 Hello World mit Java RMI... Übersetzen und Starten des Systems Übersetzen der Java-Quellen Quelldateien: Hello.java, HelloServer.java, HelloClient.java Aufruf: javac *.java erzeugt: Hello.class, HelloServer.class, HelloClient.class Erzeugen des Client-Stubs (Proxy-Objekt) für Clients bis JDK 1.4: Aufruf: rmic -v1.2 HelloServer erzeugt HelloServer Stub.class ab JDK 1.5: Client erzeugt Proxy-Klasse zur Laufzeit durch java.lang.reflect.proxy Betriebssysteme / verteilte Systeme Client/Server-Programmierung (2/15) Hello World mit Java RMI... Übersetzen und Starten des Systems... HelloClient.java Hello.java HelloServer.java javac javac HelloClient.class Hello.class Hello.class HelloServer.class Client Seite bis JDK 1.4 rmic Server Seite HelloServer_Stub.class Betriebssysteme / verteilte Systeme Client/Server-Programmierung (2/15) 57

21 1.4.1 Hello World mit Java RMI... Übersetzen und Starten des Systems... Starten des Namensdienstes Aufruf: rmiregistry [port] erlaubt aus Sicherheitsgründen nur die Registrierung von Objekten auf dem lokalen Host d.h. RMI-Registry muß auf Server-Rechner laufen Standard-Port: 1099 Starten des Servers Aufruf: java HelloServer Starten des Clients Aufruf: java HelloClient Betriebssysteme / verteilte Systeme Client/Server-Programmierung (2/15) 58 Anmerkungen zu Folie 58: Im Beispiel wird angenommen, daß die Klasse Hello.class (und ggf. auch HelloServer Stub.class) im lokalen Classpath liegt: beim Starten von rmiregistry beim Starten von HelloServer beim Übersetzen und Starten von HelloClient 58-1

22 1.4 Java RMI Parameterübergabe Übergabe von Parametern an Remote-Methoden erfolgt entweder über call-by-value für Werttypen und serialisierbare Objekte oder über call-by-reference für Objekte, die Remote implementieren Entscheidung wird z.t. erst zur Laufzeit getroffen! Rückgabe des Ergebnisses folgt selben Regeln wie Parameterübergabe Betriebssysteme / verteilte Systeme Client/Server-Programmierung (2/15) Parameterübergabe... Übergabe eines serialisierbaren Objekts Original Client Objekt param Stub Objekt Skele ton Server Objekt op(param) param serialisieren Netz verbindung unabhängige Kopie param deserialisieren <<create>> op(param) param m() Betriebssysteme / verteilte Systeme Client/Server-Programmierung (2/15) 60

23 1.4.2 Parameterübergabe... Übergabe eines Remote-Objekts Client Objekt param param Stub Stub Objekt Skele ton Server Objekt op(param) tostub(param) paramstub paramstub serialisieren Netz verbindung paramstub deserialisieren <<create>> op(paramstub) param Stub m() Betriebssysteme / verteilte Systeme Client/Server-Programmierung (2/15) 61

Client/Server-Programmierung

Client/Server-Programmierung Client/Server-Programmierung WS 2014/2015 Betriebssysteme / verteilte Systeme [email protected] Tel.: 0271/740-4050, Büro: H-B 8404 Stand: 15. Oktober 2015 Betriebssysteme / verteilte

Mehr

Client/Server-Programmierung

Client/Server-Programmierung Client/Server-Programmierung WS 2014/2015 Betriebssysteme / verteilte Systeme [email protected] Tel.: 0271/740-4050, Büro: H-B 8404 Stand: 15. Oktober 2015 Betriebssysteme / verteilte

Mehr

Remote Method Invocation

Remote Method Invocation Remote Method Invocation spezielle Technik aus dem Java-Umfeld Ausführung der Methoden auf einem entfernten Rechner Analogon zum RPC (Remote Procedure Call) Zweck: Objekte in verschiedenen Java-VM s Aufruf

Mehr

Remote Method Invocation

Remote Method Invocation 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

Mehr

Systemprogrammierung. Projekt: Java RMI. Wintersemester 2006 / 2007

Systemprogrammierung. Projekt: Java RMI. Wintersemester 2006 / 2007 Systemprogrammierung Projekt: Java RMI Wintersemester 2006 / 2007 Systemprogrammierung 1. Einleitung 2. Einführung in RPC 3. RMI 4. Code Beispiele 5. Live Vorstellung 6. Ausblick 7. Fazit 2 1. Einleitung

Mehr

Einführung: Verteilte Systeme - Remote Method Invocation -

Einführung: Verteilte Systeme - Remote Method Invocation - Einführung: Verteilte Systeme - - Prof. Dr. Michael Cebulla 11. Dezember 2014 Fachhochschule Schmalkalden Wintersemester 2014/15 1 / 43 M. Cebulla Verteilte Systeme Gliederung 1 2 Architektur RMI Kommunikation

Mehr

B Java RMI B.2 B.4. 1 Java. 1.2 Methoden. 1.1 Objekte (2) 1.1 Objekte. Objektorientierte Sprache. Klassenbeschreibung. Methode ist eine Art Funktion

B Java RMI B.2 B.4. 1 Java. 1.2 Methoden. 1.1 Objekte (2) 1.1 Objekte. Objektorientierte Sprache. Klassenbeschreibung. Methode ist eine Art Funktion 1 Java 1.1 e B Java RMI orientierte Sprache e beschrieben in Klassendefinitionen und andere Datentypen: int, float, boolean, etc. referenzen Verweise auf e keine Zeiger, Adressen o.ä. B.1 B.2 1.1 e (2)

Mehr

Mobile und Verteilte Datenbanken

Mobile und Verteilte Datenbanken Mobile und Verteilte Datenbanken Java RMI Vorlesung Wintersemester 2013/2014 [email protected] Institut für Informationssysteme Universität zu Lübeck Kommunikations-Middleware Bietet höhere Kommunikations-Dienste

Mehr

Java RMI Remote Method Invocation

Java RMI Remote Method Invocation Java RMI Remote Method Invocation Ziel: Aufruf von Instanzmethoden entfernter Objekte basierend auf Java. Paket: java.rmi und Unterpakete Topologie: RMI Registry RMI Server RMI Client Der Server registriert

Mehr

1 Motivation. 1 Motivation. Standard Middleware für objektorientierte Anwendungen. Motivation. Fragmentierte Objektmodel. Java RMI

1 Motivation. 1 Motivation. Standard Middleware für objektorientierte Anwendungen. Motivation. Fragmentierte Objektmodel. Java RMI 1 Motivation Motivation ierte Objektmodel Standard Middleware für objektorientierte Anwendungen CORBA,.NET-Remoting Java Remote Method Invocation (RMI) Java RMI ierte Objekte undjava RMI Zusammenfassung

Mehr

Remote Methode Invocation (RMI) ETIS SS05

Remote Methode Invocation (RMI) ETIS SS05 Remote Methode Invocation (RMI) ETIS SS05 Motivation Ablauf der Kommunikation Erstellung Remote-Service Zusammenfassung Gliederung 2 Motivation I RMI: Remote Method Invokation Möglichkeit verteilte Java-Anwendungen

Mehr

Java-Programmierung. Remote Method Invocation - RMI

Java-Programmierung. Remote Method Invocation - RMI Java-Programmierung Remote Method Invocation - RMI Entwicklungsmethoden Sockets Entwurf verteilter Anwendungen ist relativ aufwändig, da zunächst ein Kommunikationsprotokoll entwickelt werden muss aufwändig

Mehr

Java Remote Method Invocation (RMI)

Java Remote Method Invocation (RMI) Java Remote Method Invocation (RMI) Alexander Petry 13. Mai 2003 engl.: Entfernter Methodenaufruf 1 Übersicht 1. Einleitung 2. RMI Interfaces und Klassen 3. Parameterübergabe 4. Dynamisches Nachladen von

Mehr

Konzepte von Betriebssystem-Komponenten Middleware RMI

Konzepte von Betriebssystem-Komponenten Middleware RMI Konzepte von Betriebssystem-Komponenten Middleware RMI Mario Kiefer 21. Januar 2005 1 Einführung RMI (Remote Method Invocation) ermöglicht es mit relativ einfachen Mitteln verteilte Anwendungen zu erstellen.

Mehr

Programmieren II. Remote Method Invocation (RMI) Heusch -- Ratz. Institut für Angewandte Informatik

Programmieren II. Remote Method Invocation (RMI) Heusch -- Ratz.  Institut für Angewandte Informatik Programmieren II Remote Method Invocation (RMI) Heusch -- Ratz KIT Universität des Landes Baden-Württemberg und nationales Großforschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu Remote Method

Mehr

Mobile und Verteilte Datenbanken

Mobile und Verteilte Datenbanken Mobile und Verteilte Datenbanken Java RMI Vorlesung Wintersemester 2010/2011 [email protected] Institut für Informationssysteme Universität zu Lübeck Java Remote Method Invocation (RMI) Realisierung

Mehr

Remote Method Invocation

Remote Method Invocation Remote Method Invocation Aufruf von Methoden über die Grenzen der VM hinweg. Javaprozesse der rufenden und gerufenen Methode können auf verschiedenen Hosts laufen. Eine RMI-Applikation besteht aus dem

Mehr

Komponententechnologien Winter 2016/17. Komponenten. 2. Die Anfänge. Peter Sturm, Universität Trier 1

Komponententechnologien Winter 2016/17. Komponenten. 2. Die Anfänge. Peter Sturm, Universität Trier 1 Komponenten 1 2. Die Anfänge 3 Peter Sturm, Universität Trier 1 Selbstzufrieden Anwendung Hardware 4 Oh? Da gibt es noch jemanden? Anwendung Anwendung TCP/IP Hardware Hardware 5 Peter Sturm, Universität

Mehr

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

Anleitung. Ein einfaches RMI-Beispiel. (ab Java 5.0) c Y. Pfeifer. (Juni 2014) Anleitung Ein einfaches RMI-Beispiel (ab Java.0) c Y. Pfeifer (Juni 014) 1 Ein einfaches RMI-Beispiel Vorgehensweise: 1. Java Projekt anlegen. Zwei Packages server & client erstellen Auf der Server-Seite

Mehr

Überblick. Beispiel: get()-methodenaufruf am VSBoard aus Übungsaufgabe 1. Analyse einer Methode: java.lang.reflect.method

Überblick. Beispiel: get()-methodenaufruf am VSBoard aus Übungsaufgabe 1. Analyse einer Methode: java.lang.reflect.method Überblick Bietet die Möglichkeit das Laufzeitverhalten von Applikationen zu analysieren und es gegebenenfalls sogar zu beeinflussen Stubs & Skeletons Aufgabe 2 Tutorial: http://docs.oracle.com/javase/tutorial/reflect/index.html

Mehr

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

Verteilte Systeme. Verteilte Objektorientierte Systeme I. Prof. Dr. Oliver Haase Verteilte Systeme Verteilte Objektorientierte Systeme I Prof. Dr. Oliver Haase 1 Überblick Verteilte Objektorientierte Systeme 1 RPC verteilte objektorientierte Architekturen Java RMI Verteilte Objektorientierte

Mehr

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

Themen. Web Service - Clients. Kommunikation zw. Web Services Themen Web Service - Clients Kommunikation zw. Web Services Bisher: Implementierung einer Java Anwendung und Bereitstellung durch Apache Axis unter Apache Tomcat Java2WSDL Erzeugen einer WSDL-Datei zur

Mehr

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

9. Remote Method Invocation Grundlagen der Programmierung II (Java) 9. Remote Method Invocation Grundlagen der Programmierung II (Java) Prof. Dr. Bernhard Humm Hochschule Darmstadt University of Applied Sciences Sommersemester 2006 Übersicht Grundlagen der Programmierung

Mehr

Verteilte Systeme: Entfernte Methodenaufrufe

Verteilte Systeme: Entfernte Methodenaufrufe Verteilte Systeme: Entfernte Methodenaufrufe Funktionsweise entfernter Methodenaufrufe Entfernte Schnittstellen und verteilte Objektsysteme Entfernte Methodenaufrufe mit Java RMI Parameterübergabe Call-By-Value

Mehr

Verteilte Systeme SS 2014 Verteilte Systeme (1/13) Verteilte Systeme SS 2014 Middleware Verteilte Systeme (2/13)

Verteilte Systeme SS 2014 Verteilte Systeme (1/13) Verteilte Systeme SS 2014 Middleware Verteilte Systeme (2/13) Verteilte Systeme SS 2014 Universität Siegen [email protected] Tel.: 0271/740-4050, Büro: H-B 8404 Stand: 20. März 2015 Betriebssysteme / verteilte Systeme Verteilte Systeme (1/13) i

Mehr

8.1.5 Java RMI Remote Method Invocation

8.1.5 Java RMI Remote Method Invocation 8.1.5 Java RMI Remote Method Invocation (http://java.sun.com/products/jdk/rmi ) (http://java.sun.com/j2se/1.5/docs/guide/rmi ) (http://java.sun.com/docs/books/tutorial/rmi ) (http://java.sun.com/developer/onlinetraining/rmi/rmi.html

Mehr

Grundlagen verteilter Systeme

Grundlagen verteilter Systeme Universität Augsburg Insitut für Informatik Prof. Dr. Bernhard Bauer Wolf Fischer Christian Saad Wintersemester 08/09 Übungsblatt 2 05.11.08 Grundlagen verteilter Systeme Lösungsvorschlag Aufgabe 1: Das

Mehr

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

Remote- und Server-Programmierung. Dr. Wolfgang Süß Thorsten Schlachter Remote- und Server-Programmierung Dr. Wolfgang Süß Thorsten Schlachter Remote Method Invocation (RMI) Servlets WebServices 2 Remote Method Invocation (RMI) Das Remote Method Invocation (RMI)-Framework

Mehr

Middleware. im Schweinsgalopp

Middleware. im Schweinsgalopp Middleware im Schweinsgalopp 1 Szenario Unternehmen verwendet SAP als ERP-System wickelt Versand über Dienstleister, hier UPS ab UPS bietet Verfolgung der Lieferung über Web- Schnittstelle Daten im ERP

Mehr

Warum EJB Technologie (1)?

Warum EJB Technologie (1)? Datenbanken und Informationssysteme 2 SS 2004 Prof. Dr. Stefan Böttcher Universität Paderborn Datenbanken und Informationssysteme 2 - Prof. Dr. Stefan Böttcher - SS 2004 Folie EJB - 1 Warum EJB Technologie

Mehr

-Testen verteilter Anwendungen

-Testen verteilter Anwendungen -Testen verteilter Anwendungen Seminar Simulation und Bildanalyse mit Java im SS04 Konstantin Tjo, Urs Pricking Testen verteilter Anwendungen 1 Übersicht Einführung in verteilte Anwendungen RMI (Remote

Mehr

Überblick. Java Reflection API. Class-Objekte

Überblick. Java Reflection API. Class-Objekte Bietet die Möglichkeit, das Laufzeitverhalten von Applikationen zu analysieren und es gegebenenfalls sogar zu beeinflussen Tutorial: http://docs.oracle.com/javase/tutorial/reflect/index.html [...] This

Mehr

10.1 Remote Method Invocation (RMI)

10.1 Remote Method Invocation (RMI) 10.1 Remote Method Invocation (RMI) Verteilte Java Anwendungen Methodenaufrufe auf Fremdobjekten (remote objects) Object Serialization Typen bleiben erhalten Package java.rmi (und andere) Vorläufige Version

Mehr

Client/Server-Programmierung

Client/Server-Programmierung Client/Server-Programmierung WS 2014/2015 Betriebssysteme / verteilte Systeme [email protected] Tel.: 0271/740-4050, Büro: H-B 8404 Stand: 23. Januar 2015 Betriebssysteme / verteilte

Mehr

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

Netzprogrammierung: Java RMI - Remote Method Invocation (Teil 1) Netzprogrammierung: Java RMI - Remote Method Invocation (Teil 1) Robert Tolksdorf und Peter Löhr Überblick 1. Fernaufrufbare Objekte 2. Das Objektverzeichnis rmiregistry 3. Parametersemantik Dokumentation

Mehr

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

Programmieren II. Remote-Programmierung. www.kit.edu. Institut für Angewandte Informatik Programmieren II Remote-Programmierung KIT Universität des Landes Baden-Württemberg und nationales Großforschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu Remote-Programmierung Remote Method Invocation

Mehr

Musterlösung Übungsblatt 2 Netzprogrammierung WS 05/06

Musterlösung Übungsblatt 2 Netzprogrammierung WS 05/06 Musterlösung Übungsblatt 2 Netzprogrammierung WS 05/06 Aufgabe 1 Bitte schreiben Sie ein RMI Objekt, das eine Person repräsentiert. Es soll die folgende Schnittstelle implementieren: public interface Person

Mehr

Remote Method Invocation (RMI)

Remote Method Invocation (RMI) Remote Method Invocation (RMI) Hier soll ein Überblick 1 über die RMI-Technologie der Java 2 Plattform gegeben werden. Inhaltsverzeichnis 1.Überblick...3 2.RMI Architektur...6 2.1.Überblick...6 2.2.RMI

Mehr

Verteiltes Rechnen. Verteilte Dienste mit Java Remote Method Invocation (RMI). Prof. Dr. Nikolaus Wulff

Verteiltes Rechnen. Verteilte Dienste mit Java Remote Method Invocation (RMI). Prof. Dr. Nikolaus Wulff Verteiltes Rechnen Verteilte Dienste mit Java Remote Method Invocation (RMI). Prof. Dr. Nikolaus Wulff Verteiltes Rechnen Anwendungen im WWW sind meist als Client-Server Architekturen realisiert. Ein Client

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 35 Einstieg in die Informatik mit Java Vererbung Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 35 1 Grundlagen 2 Verdeckte Variablen 3 Verdeckte Methoden 4 Konstruktoren

Mehr

Szenario 3: Service mit erweiterter Schnittstelle

Szenario 3: Service mit erweiterter Schnittstelle 2. Hintergrundverarbeitung in Android: Services und Notifications Szenarien für lokale Services Szenario 3: Service mit erweiterter Schnittstelle Ein Service bietet zusätzliche Methoden an, über die sich

Mehr

Überblick. Java RMI Java Remote Method Invocation Marshalling und Unmarshalling Aufgabe 1. VS-Übung (SS12) Java RMI 1 1

Überblick. Java RMI Java Remote Method Invocation Marshalling und Unmarshalling Aufgabe 1. VS-Übung (SS12) Java RMI 1 1 Überblick Java RMI Java Remote Method Invocation Marshalling und Unmarshalling Aufgabe 1 VS-Übung (SS12) Java RMI 1 1 Fernmethodenaufrufe Remote Method Invocation (RMI) Aufrufe von Methoden an Objekten

Mehr

Vererbung. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java 23.5.

Vererbung. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java 23.5. Vererbung Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 23.5.07 G. Bohlender (IANM UNI Karlsruhe) Vererbung 23.5.07 1 / 22 Übersicht 1

Mehr

Klausur zur Vorlesung Einführung in Verteilte Systeme WS 05/06 Prof. Dr. Odej Kao 30. März 2006

Klausur zur Vorlesung Einführung in Verteilte Systeme WS 05/06 Prof. Dr. Odej Kao 30. März 2006 Klausur zur Vorlesung Einführung in Verteilte Systeme WS 05/06 Prof. Dr. Odej Kao 30. März 2006 Aufkleber Name: Vorname: Matrikel: Studiengang: inkl. DPO4, B/M, Schwerp., Schreiben Sie zunächst Ihren Namen

Mehr

Einführung Verteilte Systeme - Java Threads I -

Einführung Verteilte Systeme - Java Threads I - Einführung Verteilte Systeme - Java Threads I - Prof. Dr. Michael Cebulla 20. November 2014 Fachhochschule Schmalkalden Wintersemester 2014/15 1 / 38 M. Cebulla Verteilte Systeme Gliederung Wiederholung:

Mehr

Klausur zur Vorlesung Einführung in Verteilte Systeme WS 05/06 Prof. Dr. Odej Kao 3. Februar 2006

Klausur zur Vorlesung Einführung in Verteilte Systeme WS 05/06 Prof. Dr. Odej Kao 3. Februar 2006 Klausur zur Vorlesung Einführung in Verteilte Systeme WS 05/06 Prof. Dr. Odej Kao 3. Februar 2006 Aufkleber Name: Vorname: Matrikel: Studiengang: inkl. DPO4, B/M, Schwerp., Schreiben Sie zunächst Ihren

Mehr

Übungen zu Softwaretechnik

Übungen zu Softwaretechnik Prof. Dr. Dr. h.c. M. Broy Lösungsblatt 11 Dr. H. Ehler, S. Wagner 23. Januar 2004 Übungen zu Softwaretechnik Aufgabe 16 Qualitätseigenschaften Broker-Pattern Beurteilen Sie das in Aufgabe 15 benutzte

Mehr

Überblick. Java RMI Java Remote Method Invocation Marshalling und Unmarshalling Aufgabe 1. VS-Übung (SS16) Java RMI 1 1

Überblick. Java RMI Java Remote Method Invocation Marshalling und Unmarshalling Aufgabe 1. VS-Übung (SS16) Java RMI 1 1 Überblick Java RMI Java Remote Method Invocation Marshalling und Unmarshalling Aufgabe 1 VS-Übung (SS16) Java RMI 1 1 Fernmethodenaufrufe Remote Method Invocation (RMI) Aufrufe von Methoden an Objekten

Mehr

Vererbung, Polymorphie

Vererbung, Polymorphie Vererbung, Polymorphie Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 21.1.08 G. Bohlender (IANM UNI Karlsruhe) Vererbung, Polymorphie 21.1.08

Mehr

Kommunikationsunterstützung:

Kommunikationsunterstützung: Kommunikationsunterstützung: Entfernter Prozedur/Methodenaufruf VIS2-RPC-1 Gliederung Ziel und grundlegende Funktionsweise des RPC/RMI Verteiltes Objektmodell Design Implementation Beispiel: Java-RMI VIS2-RPC-2

Mehr

Kommunikation in verteilten Anwendungen

Kommunikation in verteilten Anwendungen Kommunikation in verteilten Anwendungen Einführung in Sockets, Java RMI,CORBA und Jini von Prof. Dr. Oliver Haase 2., überarbeitete und erweiterte Auflage Oldenbourg Verlag München 1 Einführung in das

Mehr