Kap 4-1OHO Kap. 4.2 Das Orbix CORBA-System Kurzer überblick zu der CORBA-Implementierung Orbix •Unser Fahrplan: •IDL Verwendungsbeispiel •Zoom-In: CORBA.

Slides:



Advertisements
Ähnliche Präsentationen
Dynamische WEB-Applikationen
Advertisements

M a r c – o l i v e r p a h l Informatik I – Kapitel 7 Klassen und höhere Datentypen Zusammenfassung des Kapitel 7 Küchlin, Weber, Einführung in die Informatik,
der Universität Oldenburg
Objektorientierter Zugriffsschutz in RACCOON
Konzepte objektorientierter Systeme
Transaction Synchronization for XML Data in Client Server Web Applications Stefan Böttcher & Adelhard Türling Universität Paderborn.
Anwendungen des OODM auf die ADB / NDB
Kurt Rosenberg. C# für.NET oder.NET für C# is(C# == C++ && Java)? true : false ; reines C# Ausblick Überblick.
PKJ 2005/1 Stefan Dissmann Vorwoche - Klasse public class Studierende { private String name, vorname, studiengang; private int matNr, semester; private.
DI Christian Donner cd (at) donners.com
Nano-World The interdisciplinary Virtual Laboratory on Nanoscience Ein Projekt des Virtuellen Campus T. Gyalog, M. Guggisberg, R. Schneider, Ch. Freiburghaus,
Objektorientierter Zugriffsschutz in R ACCOON Manuel Koch FU Berlin.
Verteilte Software - Java - Prozedurale Programmierung 1
Internetzugriff mit Strings und Streams
JDBC & ODMG Motivation - Beispielanwendung JDBC - DriverManager - Connection - Statement - ResultSet Anwendung ODMG - Objektmodell /ODL - OQL - Java-Binding.
Objektrelationales Mapping mit JPA Advanced Mapping Jonas Bandi Simon Martinelli.
Objektrelationales Mapping mit JPA Entity Mapping Jonas Bandi Simon Martinelli.
Objektrelationales Mapping mit JPA Getting Started Jonas Bandi Simon Martinelli.
MD 5/02 CORBA Lebensdauer von Objekten, Transaktionen.
MD 4/02 Hello World from CORBA ein erster Überblick.
M a r c – o l i v e r p a h l Die ObjektOrientierte Mühle Das Beispiel soll noch einmal das Konzept der Objektorientiertheit erläutern. Dabei werden außerdem.
1 Praktikum 3 Betriebssysteme II Stefan Linke M. Serhat Cinar Implementierung einer CDDB-Applikation mit CORBA.
Dynamische Webseiten Java servlets.
Objektorientierte Programmierung JDK-Klassenbibliothek
JAVA RMI.
Common Object Request Broker Architecture (CORBA)
Overwiew COM.
Proxy Pattern Vorlesung Design Patterns Sieglinde Heinrich
F açade P attern By Nicolas Lanquetin. Façade Pattern Structural Pattern Bietet ein gemeinsames Interface, anstatt vieler Interfaces eines Subsystems.
Modulare Programmierung
15.1 Synchronisation nebenläufiger Prozesse
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.
Letzter Tag Spaeter Zeitpunkt letzte Lied hoert man weiter.
Informatik 1 Übung 8. NACHBESPRECHUNG Übung 8 Rekursion Existiert Weg von A nach B?
OO implementieren Teil IV Objekte erzeugen. © René ProbstModul 226IV - 2 Von der Klasse zum Objekt Plan Bau Objekt Klasse Instanzierung Objekt Das Objekt.
Java Performance Tuning Performance Tuning is similar to playing a strategy game but happily you usually get paid for it.
Projekt Alcatraz Java RMI / Spread - Gruppe A4.
Interoperable Informationssysteme - 1 Klemens Böhm Systeme 4: Query Processing in heterogenen Umgebungen.
Einführung in die Programmierung Wintersemester 2009/10 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Entity Mapping Persistente Domänenmodelle mit JPA 2.0 und Bean Validation.
Advanced Mapping Persistente Domänenmodelle mit JPA 2.0 und Bean Validation.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fakultät.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Parallel Programming Thread Synchronization. Heute 1. Lösung zu Assignment 2 2. Erstellen und Starten von Threads in Java 3. Das synchronized Schlüsselwort.
Parallel Programming Proofs ( yay !)
Kap. 4 Der Corba-Standard zur verteilten Objektverwaltung
Kap OHO-Workshop: MTS - COMs OTM T. Grabs Kap. 3.4 Microsoft Transaction Server als Beispiel eines OTM Was ist COM/DCOM? Microsoft Transaction Server:
Getting Started Persistente Domänenmodelle mit JPA 2.0 und Bean Validation.
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.
Equals, Hashcode und CompareTo Micha Kessler
Einführung in CORBA Fachseminar Informations- und Kommunikationssysteme SS99 MartinVogt, IIIC, 8. Semester.
Semesterarbeit SOA CRYSTL-PIM Product Information System
Purga - Scriptengine Ein Einblick.
CuP - Java Zwölfte Vorlesung Klassen – Komposition und Vererbung Freitag, 15. November 2002.
Transaktionale Systeme Projektteil B Verteilte Transaktionen, Workflow- und Transaktions-Manager.
Launch ON Global.vi System ID object name classname Services to suscribe Observer Control Ref vi-path Service name Step 1 : Objects register to the Global.vi´s,
Beispielanwendung von Java Threads
Voyager Eigenschaften/Vorzüge Universalität: –ROI-Modelle: CORBA, RMI, DCOM –verschiedene Namens-, Verzeichnisdienste Nachrichtentypen: synchron, oneway,
Prof. Dr. Alois Schütte Advanced System Programming 1 Das concurrent Paket 1 Überblick 2 Lock 3 Condition 4 Queue 5 Executors.
MD 4/02 CORBA Static/Dynamic Invocation Interface (SII/DII), Interface Repository.
Realisierung verteilter Anwendungen: Teil 3 zBeim vorigen Mal: Sockets, RMI zInhalt heute yCommon Object Request Broker Architecture (CORBA) zLernziele:
Controller Werkstatt updaten Werkstatt ws = werkstattarray.get(werkstattId); ws.setName(name); ws.setAnsprechpartner(ansprechpartner); ws.setTelefonnummer(telefonnummer);
IOStreamLibrary.
Aufgaben zu Rückgabewerten
IOStreamLibrary.
Kara: act()-Methode.
 Präsentation transkript:

Kap 4-1OHO Kap. 4.2 Das Orbix CORBA-System Kurzer überblick zu der CORBA-Implementierung Orbix •Unser Fahrplan: •IDL Verwendungsbeispiel •Zoom-In: CORBA Kommunikationsmechanismus •Orbix Systemübersicht •Naming Service, IORs •VBS-Szenario mit Transaktionsservice, persistenten Objekten...

Kap 4-2OHO IDL Beispiel // naming service constants const string OHOContextName = "OhO_ss2000"; module Bank { typedef long AccountID; interface Account { readonly attribute AccountID number; // account id readonly attribute float balance; // amount of money in account // thrown if not enough money on account to withdraw exception InsufficientFunds {}; // public methods to modify an account void Deposit ( in float amount ); void Withdraw ( in float amount ) raises (InsufficientFunds); }; Interfaces - Attribute - Operationen - Exceptions TypeDefs, Konstanten...

Kap 4-3OHO Verwendung des IDL Compilers IDL Bank.idl idl -B Bank.idl C++ Header Bank.hh C++ Stubs BankC.cpp C++ Skeletons BankS.cpp C++ Source Client.cpp C++ Compiler FinanceClient C++ Source AccountImpl.cpp C++ Compiler AccountServer Orbix DLL

Kap 4-4OHO account->balance() Client Object Request Broker CORBA Kommunikationsmechanismus (1) Proxy-Objekt

Kap 4-5OHO Auszug aus den Account-Stubs CORBA::Float Account::balance ( ) { CORBA::Environment IT_env; CORBA::Request IT_r (this,_get_balance",IT_env,1,0); IT_r.invoke (CORBA::Flags(0),IT_env); if ( !IT_r.isException (IT_env) ) { CORBA::Float IT_result; IT_r >> IT_result; IT_r.checkEnv (IT_env); return IT_result; } else … }

Kap 4-6OHO Proxy-Objekt account->balance() Client Object Request Broker CORBA Kommunikationsmechanismus (2) Objekt-Adapter Request Implementation Repository AccountImpl Server

Kap 4-7OHO Auszug aus den Account-Skeletons Account_dispatch::dispatch ( CORBA::Request & IT_r, void * IT_pp ) { const char *IT_s = IT_r.getOperation (); if ( !strcmp(IT_s,_get_balance") ) { CORBA::Float IT_result; CORBA::Environment IT_env (IT_r); IT_result = ((Bank::Account *)IT_pp) -> balance ( IT_env ); IT_r << IT_result;... }

Kap 4-8OHO AccountImpl Server Proxy-Objekt Objekt-Skelett account->balance() Client Object Request Broker CORBA Kommunikationsmechanismus (3) Account Request

Kap 4-9OHO Account-Server Implementierung CORBA::Float AccountImpl::balance ( CORBA::Environment & ) { cout << AccountImpl::balance() called" << endl; return this->my_balance; }

Kap 4-10OHO CORBA::Float balance(…) {... } Server Proxy-Objekt Objekt-Skelett account->balance() Client Object Request Broker CORBA Kommunikationsmechanismus (4) Account Request Answer

Kap 4-11OHO Komplett-Anatomie eines ORBs Client IDL Stubs: statisch, d.h. alle Operationen sind zur Compilezeit bekannt. Dynamic Invocation Interface (DII) findet Objekte und Schnittstellen zur Laufzeit und konstruiert den Aufruf dynamisch, unter Verwendung des Interface Repository (für interpretierende Werkzeuge, wie Query Browser) Server Object Adapter interpretiert Objektreferenzen, bildet diese auf Objektimplementierungen ab und ruft Methodenimplementierungen auf, statisch via IDL Skeletons oder dynamisch über Dynamic IDL Skeletons als Grundlage für die Implementierung der Anwendungslogik ORB Interface Objekt-ImplementationClient IDL Skeleton IDL Stubs Object Adapter Object Request Broker Dynamic Skeleton Dynamic Invocation Interface Repository Implemen- tation Repository

Kap 4-12OHO Was ist nun in Orbix der ORB? •Der ORB in Orbix besteht aus mehreren Komponenten: •Orbix Link-Library Wird sowohl dem Client-, als auch Server hinzugelinkt. Basisfähigkeit zum Austausch von CORBA::Requests, enthält ORB-Interface und Objekt-Adapter der vorherigen Folie. •Orbix Daemon orbixd Orbix-Vermittlung: Lokalisiert CORBA-Objekte, leitet Requests entweder zu anderen Rechnern weiter oder startet lokal eine Implementierung, dann LOCATION_FORWARD Mechanismus. Client kommuniziert danach direkt mit CORBA-Server. •Konfigurationsdateien Wo liegen die Repositories? Welches ist der Default-orbixd?... •Weitere Link-Libraries für IFR und DII •Weitere Bestandteile des Orbix-Systems: •Verwaltungsprogramme für die Repositories, Includes, Doku

Kap 4-13OHO VBS-Szenario - übersicht Finance STUD Zürich LondonBasel Client Account STUD2 Account Naming Service Transaction Service

Kap 4-14OHO Datenkapselung(1) •Speicherform der Kundendaten: relationale Tupel CREATE TYPE cust_address_type ( streetVARCHAR2(50), zipCodeVARCHAR2(5), cityVARCHAR2(50) ); /* Customer table */ CREATE TABLE customer ( customer_IDINTEGER PRIMARY KEY, person_dataCUST_PERSON_TYPE, address_dataCUST_ADDRESS_TYPE ); CREATE TYPE cust_person_type ( family_nameVARCHAR2(50), pre_name VARCHAR2(50), nationalityVARCHAR2(50), date_of_birth DATE ); /* Account table */ CREATE TABLE account ( account_numberINTEGER PRIMARY KEY, customer_IDINTEGER, balance NUMBER; );

Kap 4-15OHO Datenkapselung (2) •Repräsentation der Kundendaten: feingranulare CORBA-Objekte enum Nation { UNKNOWN, CH, D, F, GB, IR, NL }; struct Address { string street; string zipcode; string city; }; interface Customer { readonly attribute string name; readonly attribute string firstname; readonly attribute Nation nationality; readonly attribute string birthdate; readonly attribute Address addr; readonly attribute Account account; }; interface Account { readonly attribute AccountID number; readonly attribute float balance; void Deposit ( in float amount ); void Withdraw ( in float amount ) raises (InsufficientFunds); };

Kap 4-16OHO VBS Szenario: Datenzugriff auf Kundendaten STUD Zürich LondonBasel Client STUD2 Naming Service 1. VBS = NamingService->resolve(...) Finance 2. VBS->Transfer(…)

Kap 4-17OHO Aktivierung von CORBA Objekten •Das Münchhausen Problem von CORBA: Wie ziehe ich mich selbst an den Haaren aus dem Sumpf? •Bei CORBA: Woher bekommt man die erste Objektreferenz? •Möglichkeiten: •ORB::resolve_initial_reference() Standardisiert für wenige zentrale Dienste wie NamingService. •ORB::string_to_object() Wandelt stringified IOR in ein Objektreferenz zurück. Problem: Wer nennt uns vorher den String? •NamingService::resolve() NamingService bietet Mapping von Strings auf OIDs. Again: Eintrag muss bereits vorhanden sein… • ::_bind() Orbix-proprietärer Weg über Orb-Konfiguration, siehe Übung.

Kap 4-18OHO CORBA IORs (Inter-ORB-References) > catns OhO_ss2000.OTS IOR: a b49444c3a436f e f6e732f e f6e f72793a312e d f64 626c e a2e d3a5c64626c e a2e6 3683a436f e f6e735f e f6e f72793a 303a3a49523a436f e f6e735f e f6e f IOR V 1.74 { type_id : IDL:CosTransactions/TransactionFactory:1.0 profiles : { tag : TAG_INTERNET_IIOP data : ProfileBody of length 125 { iiop_version: 1.0 host : dblab5.ethz.ch port : 6 object_key : :\dblab5.ethz.ch:CosTransactions_TransactionFactory:0 ::IR:CosTransactions_TransactionFactory } } }

Kap 4-19OHO Code-Beispiel Bank::Finance::Transfer() void FinanceImpl::Transfer( Bank::AccountID a1,Bank::AccountID a2, float amount, CORBA::Environment &env ) { try { tx = OTS->create(1000); source = destin = source->Withdraw(amount, env); destin->Deposit(amount, env); tx->commit(); } catch (...) { tx->rollback(); throw Bank::Finance::TransferFailed(); }

Kap 4-20OHO VBS Szenario: Finance-Dienst in voller Aktion STUDSTUD2 Transaction Service 1. create() Client Finance VBS->Transfer(1001,1004, 4711) Account 2. a1 = Account::_bind(…) 3. a1->Withdraw(4711) Account 5. A2 = Account::_bind(...) 6. a2->Deposit(4711) Naming Service 4. register() 7.

Kap 4-21OHO Persistente CORBA Objekte •Problem: Aktivierung eines Objektes mit persistentem Zustand? •Object-Oriented Database Adapter zum direkten Einblenden von Objekten aus Objektbanken in die CORBA Welt, nur wir haben noch keinen gesehen... •Orbix-spezifisch: spezialisierte ObjectLoader Klasse ein Hook im ORB, um Einfluss darauf nehmen zu können, wie ein zu aktivierendes Objekt initialisiert werden soll. Siehe Übung: Aus der Objektreferenz wird die gewünschte Kontonummer gelesen, die Datenbank angesprochen und mit den gelesenen Werten ein neues Account Objekt erzeugt. •CORBA: Persistent Object Service Standardisierter Dienst, um Objekte mit persistenten Zuständen zu initialisieren. Nachteil: zusätzliche Kommunikation und erneut vorherige Verknüpfung notwendig. •Neu: Portable Object Adapter (POA) aber noch nicht weit verbreitet

Kap 4-22OHO VBS Szenario: Festschreiben der Datenänderungen Client Finance Transaction Service Account 5. DONE 2. prepare() Koordiniert 2PC der beteiligten Objekten 1. commit() STUDSTUD2 3. UPDATE commit() if all OK 4. COMMIT