E.1 Object Request Brokers



Ähnliche Dokumente
D.1 Organisatorisches

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

39 Object Request Brokers

39 Object Request Brokers

E.1 Object Request Brokers

W.1 Lösung der 4. Aufgabe

F.1 Überblick. 1 RPC-System in Aufgabe 3. Kommunikationsschicht: tauscht Daten zwischen zwei Rechnern aus

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

Java RMI Remote Method Invocation

Remote Method Invocation

Java Kurs für Anfänger Einheit 5 Methoden

Applet Firewall und Freigabe der Objekte

Mobile und Verteilte Datenbanken

CORBA. Systemprogrammierung WS

Programmieren in Java

Java-Programmierung. Remote Method Invocation - RMI

Übungen zu Softwaretechnik

Java: Vererbung. Teil 3: super()

Musterlösung Klausur SS 2004

Einführung in die Programmierung

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

Vorkurs C++ Programmierung

How-to: Webserver NAT. Securepoint Security System Version 2007nx

Java Einführung Umsetzung von Beziehungen zwischen Klassen. Kapitel 7

Mobile und Verteilte Datenbanken

Prinzipien Objektorientierter Programmierung

Java Einführung Collections

4D Server v12 64-bit Version BETA VERSION

3 Objektorientierte Konzepte in Java

Zählen von Objekten einer bestimmten Klasse

Der lokale und verteilte Fall

Objektorientierte Programmierung

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

Kapitel 9. Inner Classes. 9.1 Wiederholung: Iteratoren. Ausführen einer Operation auf allen Elementen einer Containerklasse

Software Engineering Interaktionsdiagramme

Prof. Dr. Uwe Schmidt. 21. August Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252)

Anleitung zur Installation und Verwendung von eclipseuml 2.1.0

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Musterlösung Übungsblatt 2 Netzprogrammierung WS 05/06

Übung: Verwendung von Java-Threads

2. Hintergrundverarbeitung in Android: Services und Notifications

Studentische Lösung zum Übungsblatt Nr. 7

Einstieg in die Informatik mit Java

Problemstellung. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 24: Reflection 1. IDE und automatische Tests.

Überblick. Class-Objekte. Bietet die Möglichkeit das Laufzeitverhalten von Applikationen zu analysieren und es gegebenenfalls sogar zu beeinflussen

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

Große Übung Praktische Informatik 1

Überblick. Lineares Suchen

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Programmieren Tutorium

Applets I. Grundlagen der g Applet-Programmierung

Java Reflection. Meta-Programmierung mit der java.lang.reflection API. Prof. Dr. Nikolaus Wulff

Fassade. Objektbasiertes Strukturmuster. C. Restorff & M. Rohlfing

Richtlinien für das Design und das Bestellen von Nutzen für Leiterplatten im Pool

Client-Server-Beziehungen

VS Praktikum 03 Konzept

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015

trivum Multiroom System Konfigurations- Anleitung Erstellen eines RS232 Protokolls am Bespiel eines Marantz SR7005

Auszug aus JAX-WS Folien

Klausur zur Einführung in die objektorientierte Programmierung mit Java

Einführung: Verteilte Systeme - Remote Method Invocation -

Java Virtual Machine (JVM) Bytecode

Grundlagen verteilter Systeme

Vgl. Oestereich Kap 2.7 Seiten

MCRServlet Table of contents

RFID Lösungen Fragebogen über Ihr RFID Projekt

Folgende Voraussetzungen für die Konfiguration müssen erfüllt sein:

Java Einführung Packages

Loggen Sie sich in Ihrem teamspace Team ein, wechseln Sie bitte zur Verwaltung und klicken Sie dort auf den Punkt Synchronisation.

2. Installation unter Windows 8.1 mit Internetexplorer 11.0

Klassenentwurf. Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? Objektorientierte Programmierung mit Java

Stefan Dahler. 1. Remote ISDN Einwahl. 1.1 Einleitung

Step by Step Softwareverteilung unter Novell. von Christian Bartl

Programmiersprache 2 (C++) Prof. Dr. Stefan Enderle NTA Isny

Powermanager Server- Client- Installation

Anwendungsprotokolle: HTTP, POP, SMTP

Software Engineering Klassendiagramme Assoziationen

-Verschlüsselung mit Geschäftspartnern

Selbstbestimmtes Lernen. Proinformatik III Objektorientierte Programmierung. Format. Inhalt. Buzzwords

ObjectBridge Java Edition

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

Praktische Übung 'JUnit-Test'

Anleitung zur Bearbeitung von Prüferkommentaren in der Nachreichung

DURCH VIDA ERZEUGTE PROTOKOLLDATEIEN 1 EINFÜHRUNG

Einführung in die Informatik Tools

YouTube: Video-Untertitel übersetzen

5.2 Neue Projekte erstellen

HIT-Software Installieren und Starten der Netzwerklizenz als Download-Anwendung

2. Installation unter Windows 10 mit Internetexplorer 11.0

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 22

-Testen verteilter Anwendungen

Nathan Burgener. Design by Contract. Modul SWE

RT Request Tracker. Benutzerhandbuch V2.0. Inhalte

Algorithmik II. a) Fügen Sie in einen anfangs leeren binären Baum die Schlüsselfolge 20, 28, 35, 31, 9, 4, 13, 17, 37, 25 ein.

Für objektbasiertes Programmieren ist keine objektbasierte Programmiersprache erforderlich!

Schedulingund Thread-Ausführer

Programmieren I. Strategie zum Entwurf von Klassen. Beispiele. Design von Klassen. Dr. Klaus Höppner. Beispiel: Bibliothek

S TAND N OVEMBE R 2012 HANDBUCH DUDLE.ELK-WUE.DE T E R M I N A B S P R A C H E N I N D E R L A N D E S K I R C H E

Folge 19 - Bäume Binärbäume - Allgemeines. Grundlagen: Ulrich Helmich: Informatik 2 mit BlueJ - Ein Kurs für die Stufe 12

U08 Entwurfsmuster (II)

Transkript:

E Überblick über die 4. Übung E Überblick über die 4. Übung 1 Komponenten eines ORBs Lösungsskizze Aufgabe 2 RPC und ORB Aufrufsemantiken Hinweise Aufgabe 3 Kommunikationsschicht: tauscht Daten zwischen zwei Rechnern aus RPC Schicht: definiert die Aufrufsemantik und das Marshalling Object Store: verwaltet den Lebenszyklus der Objekte Stub / Skeleton Generator: erzeugt Code für die Stubs und die Skeletons Nameserver: findet Objekte anhand deren Namen Nameserver Universität Erlangen-Nürnberg Informatik 4, 2004 Uebung4.fm 2004-11-15 15.20 E.1 Stub RPC Generator Communication Skeleton RPC Remote Object ObjectStore.3 2 Kommunikationsschicht ermöglichen Methodenaufrufe an entfernten Objekten (Objekte in anderen JVM) zuständig für den Datenaustausch zwischen zwei Rechnern verwendet DatagramSocket (UDP) Beispiel-ORBs: RMI, JavaIDL () () UDP Socket UDP Socket () ().2.4

3 RPC-Schicht 3 Marshalling erledigt die Weiterleitung von Methodenaufrufen wird von den Stubs und den Skeletons verwendet verwendet die Kommunikationsschicht um Bytes zu veren RPC-Schicht verpackt die Parameter in ein Anfragepaket und den Rückgabewert in ein Antwortpaket == Marshalling kopiere alle Parameter zum (besser wäre es, eine Referenz zu verschicken wenn ein Parameter ein remote Interface implementiert).5 verwende ObjectStreams/ByteArrayStreams/Datagramme um Objekte zu verschicken: ByteArrayOutputStream stream = new ByteArrayOutputStream(); ObjectOutputStream out = new ObjectOutputStream(stream); out.writeobject(...); byte[] buf = stream.tobytearray(); DatagramPacket packet = new DatagramPacket(buf,... ); Annahme für Aufgabe 3: alle Parameter passen in ein DatagramPacket.7 3 RPC 3 Fehlerbehandlung einfachster RPC ist ein primitives (synchrones) request/-protokoll: Implementierung einer bestimmten Aufrufsemantik exactly once at least once at most once last of many....6 abhängig von der Servicequalität der Kommunikationsschicht muss mit Kommunikationsfehlern umgehen können: verlorene Pakete veränderte Reihenfolge (non-fifo) duplizierte Pakete veränderte Pakete.8

3 Fehlerbehandlung - Problem 1 3 Fehlerbehandlung - Problem 2 Kommunikationsfehler: Verlust einer Anfragenachricht lost Kommunikationsfehler: Verlust einer Antwortnachricht bei Wiederholung wird die Methode mehrmals ausgeführt.9.11 3 Fehlerbehandlung - Lösung 1 3 Fehlerbehandlung - Lösung 2 Verlust einer Anfragenachricht: mögliche Lösung: Anfrage erneut schicken Verlust einer Antwortnachricht hebt Antwort auf und wiederholt sie.10 resent.12

3 Fehlerbehandlung - Problem 3 3 Fehlerbehandlung - Problem 4 Bearbeitung dauert länger als Timeout bei Bearbeitung ist noch nicht fertig fehler Fehler während des Ausführens der Methode ( stürzt ab)?.13 restart of server.15 3 Fehlerbehandlung - Lösung 3 3 Fehlerbehandlung - Lösung 4 Bearbeitung ist noch nicht fertig wiederholte Anfrage wird ignoriert stürzt ab: erkennt alte Anfragen (alte Generationsnummer) und liefert Fehler ignored.14 error return error.16

3 Fehlerbehandlung - mögliche Implementierung 4 Stub Annäherung an exactly once: Um verlorene Anfragenachrichten entgegenzuwirken werden die Pakete nach einem Timeout erneut geet. Zum vermeiden von mehrfach Ausführungen bei doppelt geeten Paketen werden IDs verwendet, welche bei einem erneuten veren der gleichen Anfrage nicht verändert werden. Der soll abgeete Antworten puffern, für den Fall, dass eine Antwort verloren geht und um eine erneute Ausführung der Methode zu vermeiden. Den Absturz eines s zu verkraften ist schwieriger...... daher ignorieren wir das Problem..17 implementiert den gleichen Typen wie das entfernte Objekt (gleiches Interface) verpackt einen Methodenaufruf in ein Request-Objekt: Objekt ID, Methoden ID, Parameter verwendet die RPC-Schicht um eine Anforderung zu veren transformiert das Rückgabeobjekt in den entsprechenden Typ.19 4 Stubs und Skeletons Stub: Stellvertreter (Proxy) des entfernten Objekts. Skeleton: Ruft die Methoden am entfernten Objekt auf Stub Skeleton entferntes Objekt 4 1 4 Stub Beispiel package test; import orb.*; public class AccountImpl_Stub implements test.account { int oid; Context ctx; public AccountImpl_Stub(int oid, Context ctx) { this.oid = oid; this.ctx = ctx; 2 3 RPC und Kommunikationsschichten.18 // erzeugte Methoden (Bsp ohne Exceptionbehandlung) public int deposit(int param0) { Object[] parameters = new Object[1]; parameters[0] = new Integer(param0); Request req = new Request(ctx, oid, 9, parameters); Object ret = req.(); return ((Integer)ret).intValue(); // weitere erzeugte Methoden....20

4 Skeleton 4 Request ruft Methoden am "echten" Objekt auf notwendige Informationen: Objektreferenz Methoden ID Parameter method() Stub () Request - serialisiert die Anfrage - verschickt das Paket - blockiert durch den Aufruf von wait() Request invoke() Skeleton process() - empfängt das Paket - deserialisiert das request-objekt - ruft process() in einem separaten Thread auf Broker method() Object.21.23 4 Skeleton Beispiel package test; import orb.*; public class AccountImpl_Skel implements Skeleton { AccountImpl object; public AccountImpl_Skel() { /*... */ public void init(int oid, Object object) { this.oid = oid; this.object = (AccountImpl) object; public Object invoke(int mid, Object[] parameters) throws Exception { switch(mid) {... case 9: { int p1 = ((Integer)parameters[0]).intValue(); int result = object.deposit(p1); return new Integer(result);.22 4 Reply deblockieren des wartenden Threads durch notify() Acceptor Acceptor Acceptor accept() Receiver invoke() returns Request Skeleton method returns Object - serialisiert Reply oder ExceptionReply - veret Paket Reply ExceptionReply.24

5 Object Store 6 Nameserver Interface: int registerobject(object obj) gibt eine eindeutige Objekt-ID zurück. Object lookupbyid(int oid) liefert das Objekt zur gegebenen Objekt-ID Stub-Erzeuger sucht die ID (und den Klassennamen); erzeugt daraufhin ein Stub-Objekt Object lookup(string name) der Nameserver lädt die Klasse und erzeugt eine Instanz der Klasse Implementationstechnik: java.util.hashtable kann verwendet werden um die Abbildung zwischen Objekt-IDs und Objekten vorzunehmen (Hinweis: die Hashtabelle kann nur Objekte speichern, die OID sollte daher in ein Integer-Objekt gekapselt werden.).25.27 6 Nameserver ist aufgeteilt in einen ID-Finder und einen Proxy-Erzeuger ID Finder bildet Namen auf OIDs ab: void bind(string name, int oid) int lookupid(string name) verwendet Hashtable ist selbst als entferntes Objekt mit der OID 1 implementiert ein realistischer Nameserver würde Referenzen auf Stub-Objekte zurückliefern anstatt OIDs das erfordert, dass zusammen mit der OID der Klassenname des Stubs zurückgegeben wird..26