Common Object Request Broker anhand eines Beispiels Aufgabestellung (www.hanser.de): Ein Konto wird von einem Server verwaltet. Der Stand des Kontos wird.

Slides:



Advertisements
Ähnliche Präsentationen
C Sharp (C#) Martin Saternus Senior Student Partner
Advertisements

der Universität Oldenburg
C ommon O bject R equest B roker A rchitecture
DVG Einfache Klassen Einfache Klassen. DVG Einfache Klassen 2 Strukturen Beispiel: Personendaten bestehen aus –String name –String vorname.
Kritische Betrachtung
DI Christian Donner cd (at) donners.com
Imperative Programmierung -Entwicklungswerkzeuge
Abstrakte Klassen HS Merseburg (FH) WS 06/07.
Pascal Busch, WWI00B – Vergleich CORBA vs. Web Services hinsichtlich der Applikationsintegration Web Services vs CORBA Web Services vs CORBA Ein Vergleich.
Java: Dynamische Datentypen
Indirekte Adressierung
Java: Grundlagen der Sprache
Java: Referenzen und Zeichenketten
Komponentenbasierter Taschenrechner mit CORBA
MD 4/02 Hello World from CORBA ein erster Überblick.
Datentyp- umwandlung. Literale sind: Bezeichner mit einem festen Wert wie z.B:
Klassenvariable. Da man für jede Kuh bzw. jede Henne auf dem Markt den gleichen Preis für ein Liter Milch, bzw. den gleichen Preis für ein Ei bekommt,
Konstruktoren.
Polymorphie (Vielgestaltigkeit)
Objekte und Arbeitsspeicher
Interface bzw. Schnittstelle anschaulich: Hüllenklasse
Objektorientierte Programmierung JDK-Klassenbibliothek
Modularisierungstechniken
Einführung in die Programmierung mit Java
Java-Kurs - 7. Übung Besprechung der Hausaufgabe Referenzvariablen
Programmieren mit JAVA
Programmieren mit JAVA
Vererbung Spezialisierung von Klassen in JAVA möglich durch
PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,
PKJ 2005/1 Stefan Dissmann Ausblick Es fehlen noch: Möglichkeiten zum Strukturieren größerer Programme Umgang mit variabler Zahl von Elementen Umgang mit.
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
Zusammenfassung Vorwoche
JAVA RMI.
Remote Methode Invocation (RMI)
Packages Vortrag : Cornelia Hardt 23. November 1999.
DVG Kommentare1 Kommentare. DVG Kommentare 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht.
DVG Einführung in Java1 Einführung in JAVA.
Abstrakte Klassen, Interface
DVG Klassen und Objekte
DVG Einfache Klassen 1 Einfache Klassen. 2DVG Einfache KlassenStrukturen Beispiel: Personendaten bestehen aus String name String name.
Klassen 02 - Klassen.
DVG Kommentare 1 Kommentare. 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht bis zum Ende der Zeile.
© 2005 Pohlig - Taulien Datenströme GK Informatik 1 Datenströme.
Seite Common Gateway Interface. Konzepte. Übersicht 1Einleitung 2Was ist CGI? 3Wozu wird CGI verwendet? 4Geschichtlicher Überblick 5Grundvoraussetzungen.
Rechnernetze und verteilte Systeme (BSRvS II)
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.
Copyright 2011 Bernd Brügge, Christian Herzog Grundlagen der Programmierung TUM Wintersemester 2011/12 Kapitel 11, Folie 1 2 Dr. Christian Herzog Technische.
Kap. 4 Der Corba-Standard zur verteilten Objektverwaltung
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.
Aufgaben Version 1: Es soll eine Wetterstation mit folgenden zwei Anzeigen implementiert werden: Aktuelle Wetterbedingungen mit Temperatur und.
Programmierung 1. Einführung Seite 1
Voyager Eigenschaften/Vorzüge Universalität: –ROI-Modelle: CORBA, RMI, DCOM –verschiedene Namens-, Verzeichnisdienste Nachrichtentypen: synchron, oneway,
2. Kommunikation und Synchronisation von Prozessen 2
Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine.
Java-Kurs - 7. Übung Besprechung der Hausaufgabe Referenzvariablen
Einführung in die Programmierung mit Java
Java-Kurs Übung Besprechung der Hausaufgabe
Einführung in die Programmierung mit Java
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Gerhard Gröger Einführung in die Programmierung mit Java 5. Vorlesung WS 2002/2003.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Thomas H. Kolbe Einführung in die Programmierung mit Java 7. Vorlesung WS 2002/2003.
MD 4/02 CORBA Static/Dynamic Invocation Interface (SII/DII), Interface Repository.
Java Programme nur ein bisschen objektorientiert.
Tutorium Software-Engineering SS14 Florian Manghofer.
Tutorium Software-Engineering SS14 Florian Manghofer.
Hello World! Javakurs 2013 Arne Kappen
Implementieren von Klassen
 Präsentation transkript:

Common Object Request Broker anhand eines Beispiels Aufgabestellung ( Ein Konto wird von einem Server verwaltet. Der Stand des Kontos wird nur solange gespeichert, wie ein Server läuft. Dabei ergibt sich bei jeder Aktivierung des Servers der gleiche Kontostand, nämlich der Anfangszustand. Es gibt nur eine Methode, zum Einzahlen von Beiträgen. Diese Methode akzeptiert jeden Betrag, also auch negative Einzahlungen, ohne Widerspruch. Sie gibt als Ergebnis den neuen Kontostand nach dem Einzahlen des angegebenen Betrags zurück. Die Clients nehmen Verbindung zum Server auf und zahlen einen oder mehrere Beiträge ein.

Lösung in CORBA Anwender des Java des JDK 1.3 brauchen keine zusätzliche Hilfsmittel Für JDK-1.2 wird zusätzlich der IDL- Compiler benötigt

Der Vertrag in IDL In CORBA werden Verträge zwischen Client und Server in der OMG-IDL-Sprache zur Definition von Schnittstellen formuliert Aus der IDL-Definition werden mit einem IDL-Compiler die Schnittstellen für Client und Server generiert

Bank1.idl Die Spezifikation der Schnittstelle wird in einer IDL-Datei abgelegt. Diese wird mit einem IDL- Compiler übersetzt. Es werden Schnittstellen sowohl für die Server- Seite als auch auf der Client-Seite generiert. Die Anbindung auf der Client-Seite wird als (Client-) Stub, die auf der Server-Seite als (Server-)Skeleton realisiert. Bank1.idl module Bank1 { Interface IKonto{ double einzahlen (in double betrag); };

OMG-IDL-Syntax Eine IDL-Datei kann Module enthalten. Für jede module-Definition wird ein Java- Package generiert. Geschachtelte Module sind erlaubt. Sie liefern in Java ineinander enthaltene Packages. Schnittstellen können ineinander von Modulen definiert werden.

Für jede interface-Definition (z.B. interface Ikonto...) Werden im entsprechenden Package die angegebenen Klassen erzeugt. Dazu gehören auch die Helper- und HolderKlassen: IKontoHelper, IKontoHolder Die Helper-Klasse hat Hilfsfunktionen, z. B. die narrow()-Methode zum Einengen der allgemeinen CORBA-Objectreferenz org.omg.CORBA.Object auf ein vom Anwender definiertes Objekt

Die Holder-Klasse wird für die Übergabe von Parametern mit Rückgabe-Semantik (inout bzw. out) verwendet, und bietet Methoden für die Behandlung von Ein- und Ausgabe-Streams.

CORBA kennt Programmausnahmen auf System- (SYSTEM) und auf Anwenderebene (User) Die CORBA-APIs im CORBA Modul sind auch über IDL definiert (Pseudo IDL (PIDL)). Die Funktionalität ist aber nicht über Dienste realisiert, sondern als Aufrufe an die jeweiligen ORBs. Kommentare beginnen mit /*und enden mit*/ oder beginnen mit // und enden mit dem zugehörigen Zeilenende

Einfache und Zusammengesetzte Datentypen in CORBA CORBA JAVA boolean char wcharchar octetbyte stringjava.lang.String wstringjava.lang.String short

unsigne short longint unisigned long int long unsigned long long long float double fixedjava.Math.BigDecimal

Für die unterschiedlichen Datentypen gibt es vordefinierte Holder-Klassen shortorg.omg.CORBA.ShortHolder longorg.omg.CORBA.IntHolder long org.omg.CORBA.LongHolder octetorg.omg.CORBA.ByteHolder floatorg.omg.CORBA.FloatHolder doubleorg.omg.CORBA.DoubleHolder char,wcharorg.omg.CORBA.CharHolder booleanorg.omg.CORBA.BooleanHolder FixedJava.math.BigDecimal

Prinzipielles Vorgehen Aus dem Vertrag zwischen Client und Server (Bank1.idl)generiert der IDL- Compiler die Schnittstelle Konto1.java im Package Bank1. Sie ist von der Wurzel aller CORBA-Instanzen in Java, der Schnittstelle org.omg.CORBA.Object, abgeleitet.

SERVANT IKonto1Impl.java Das ist der Programmcode, der die Implementierung übernimmt. Er muss im Endeffekt die in der Schnittstelle vereinbarte Funktionalität implementieren. Nach dem OMG- Standard sind aber noch weitere Methoden wie type_ids zu implementieren. Diese Methode wird vom IDL-Compiler in die Datei Bank1/_IKontoImplBase.java generiert, sodass man die Implementierung der Schnittstelle im Endeffekt von der Klasse Bank1/_IKonto1ImplBase abzuleiten hat.

Der Server ServerSun.java Der Server muß eine Intanz des Servants ablegen: IKonto1Impl konto = new IKontoImpl (); Daneben muß diese Implementierung publiziert werden. Dies geschieht hier dadurch, dass die Referenz auf das Objekt mit dem Aufruf an einen Object Request Broker (orb.object_to_string(…)) in Text umgewandelt und in einer Datei abgelegt wird. CORBAUtil.writeIOR (orb, konto, IKonto1);

Diese Referenz wird als Interoperable Object Reference IOR bezeichnet. Danach wartet der Server auf Anforderungen.

Ein Client in Java Client.java Der Client kann die sog. IOR lesen und sich mit dem Aufruf orb.string_to_object (…) eine Referenz auf ein allgemeines CORBA-Object verschaffen. Diese allgemeine Schnittstelle kann mit einem Aufruf an eines der vom IDL-Compiler generierten Programme in eine spezielle Schnittstelle eingeengt werden: konto= IKonto1Helper.narrow(allgemeines CORBA-Objekt);

Die Methoden der Schnittstelle IKonto1 können also im Client wie übliche Java-Methoden aufgerufen werden. Der ORB sorgt in Zusammenarbeit mit dem lokalen Stub, dem entfernten Skeleton sowie mit Servant (die eigentliche Implementierung) und Server für den Ablauf.

CORBAUtil.java Diese Datei enthält Routinen, die die Umwandlung von und nach Text beinhalten.

Abläufe Die Programme werden übersetzt: Erstmal wird Bank1.idl vom IDL-Compiler übersetzt: idlj Bank1.idl Danach werden die Client- und die ServerSun-Dateien compiliert.

Weitere Abläufe Client und Server laufen als eigene Prozesse. Der Server schreibt dann eine IOR-Datei in das aktuelle Verzeichnis. Danach kann der Client mit dem Aufruf java Client gestartet werden. Das aktuelle Verzeichnis des Clients muss die IOR enthalten.