MD 5/02 CORBA Lebensdauer von Objekten, Transaktionen.

Slides:



Advertisements
Ähnliche Präsentationen
Kapitel 15 Verteilte Datenbanken
Advertisements

Objektrelationales Mapping mit JPA
der Universität Oldenburg
Imperative Programmierung
DVG Dateien Dateien. DVG Dateien 2 Die Klasse File Die Klasse File stellt die Verbindung zwischen dem Filesystem des Rechners und dem.
DI Christian Donner cd (at) donners.com
Objektrelationales Mapping mit JPA Working with Persistent Objects Jonas Bandi Simon Martinelli.
Objektrelationales Mapping mit JPA Getting Started Jonas Bandi Simon Martinelli.
Ausnahmen HS Merseburg (FH) WS 06/07.
Java: Dynamische Datentypen
Indirekte Adressierung
FH-Hof Indirekte Adressierung Richard Göbel. FH-Hof Einfache Speicherung von Daten Eine "einfache" Deklaration definiert direkt eine Speicherplatz für.
Java: Grundlagen der Sprache
Java: Referenzen und Zeichenketten
MD 4/02 Hello World from CORBA ein erster Überblick.
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.
Objekte werden als Adressen (Referenzen) übergeben. Dies führt manchmal zu unerwarteten Ergebnissen...
Polymorphie (Vielgestaltigkeit)
Polymorphie (Vielgestaltigkeit)
Objekte und Arbeitsspeicher
Interface bzw. Schnittstelle anschaulich: Hüllenklasse
Exceptions. import java.sql.*; public class MyException{ boolean b; Statement stat; public MyException(){ b = stat.execute("xyz"); } Beim Übersetzen dieses.
Dynamischer Speicher. In einer Funktion wird z.B. mit der Deklaration int i; Speicher auf dem sogenannten Stack reserviert. Wenn die Funktion verlassen.
ARRAY oder FELD oder VEKTOR
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 5 Polymorphismus Sommersemester 2003 Lars Bernard.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 3 Klassen, Objekte, Arrays und Kontrollstrukturen Sommersemester 2003 Lars Bernard.
Transaktionen in verteilten Datenbanken
Philipp Ciechanowicz 5. Übung zu Software Engineering WS 2007/2008.
Vererbung Spezialisierung von Klassen in JAVA möglich durch
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.
JAVA RMI.
Remote Methode Invocation (RMI)
DVG Einführung in Java1 Einführung in JAVA.
DVG Klassen und Objekte
EDV Parallelprogrammierung1 Parallelprogrammierung mit JAVA.
JDBC EDV JDBC.
RelationentheorieObjektorientierte Datenbanken AIFB SS Das ODMG-Objektmodell vs. relationales Modell (1/9) ODMG-Objektmodell Literal_type Atomic_literal.
Ausführungsmodell Zustandsübergang einer Transaktion aus Nutzersicht:
Synchronisation paralleler Transaktionen AIFB SS Konzept der Transaktion 4.2 Konzept der Transaktion (1/4) Eine Transaktion ist ein in sich geschlossener,
Common Object Request Broker anhand eines Beispiels Aufgabestellung ( Ein Konto wird von einem Server verwaltet. Der Stand des Kontos wird.
JDBC: JAVA Database Connectivity
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.
Wir bauen uns eine Webapplikation!
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Kap 4-1OHO Kap. 4.2 Das Orbix CORBA-System Kurzer überblick zu der CORBA-Implementierung Orbix •Unser Fahrplan: •IDL Verwendungsbeispiel •Zoom-In: CORBA.
Getting Started Persistente Domänenmodelle mit JPA 2.0 und Bean Validation.
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.
Beschreiben Sie eine Web Interaktion mittels Java Applets.
WS 2012/13 Datenbanksysteme Mi 15:15 – 16:45 R Vorlesung #11 Transaktionsverwaltung.
Festschreibe-Protokoll (1) Globales Zwei-Phasen-Festschreibe-Protokoll (2- Phasen-Commit, 2PC): Phase 1: –Koordinator benachrichtigt Ressourcen, dass Commit.
Variablenkonzept Klassisch, in Java Basistyp
7.1.5 Java RMI – Remote Method Invocation
Optimale Ursprungsgerade
Objectives Verstehen was unterDelegate verstanden wird
Learning By Doing Ausnahmebehandlung Exceptions (Ausnahmebehandlung) Typische Fehlverhalten zur Laufzeit: s. Buch S. 287ff -Verwendung von null-Objekten.
Learning By Doing Parallelverarbeitung Multithreading (Nebenläufigkeit) Alte Idee der Parallelverarbeitung statt rein sequentieller Prozesse Parallelverarbeitung.
Voyager Eigenschaften/Vorzüge Universalität: –ROI-Modelle: CORBA, RMI, DCOM –verschiedene Namens-, Verzeichnisdienste Nachrichtentypen: synchron, oneway,
3. Beschreibung von Abläufen durch Algorithmen 3.4 Zufall
Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine.
Alois Schütte Advanced System Programming 2 Interprozeßkommunikation  2.1 JVM Ablaufumgebung  2.2 Java Native Interface (JNI)  Verwendung von.
Persistenz: Objekt-Lebensdauer In RDBMS wird Lebensdauer von Werten durch ihren Typ festgelegt: Instanzen von Relationstypen sind persistent, alle anderen.
Vs Verteilte Transaktionen Situation:Fragmentierung: Ein Datenbestand ist über mehrere Stationen verteilt (z.B. verteilte Datenbank, verteiltes Dateisystem,...)
MD 4/02 CORBA Static/Dynamic Invocation Interface (SII/DII), Interface Repository.
Pointer. Grundsätzliches: Im Arbeitsspeicher werden Daten gespeichert. Um auf die Daten eindeutig zugreifen zu können, werden diesen Daten Adressen zugeordnet.
Implementieren von Klassen
 Präsentation transkript:

MD 5/02 CORBA Lebensdauer von Objekten, Transaktionen

MD 5/02 Lebensdauer von Objekten in einem Programm...wird häufig von Programmiersprachen durch Sichtbarkeitsregeln gesteuert, z.B. in Java: void example() {... { String name = new String("Egon");... // am Ende dieses Blocks wird das Objekt } // freigegeben String s = name; // Compiler-Fehler }

MD 5/02 Lebensdauer von Objekten in einem Programm in C++ void example(int x) { tollesObjekt obj; // zur Laufzeit wird // automatisch ein Objekt // erzeugt obj.my_method(x); } // wenn auf obj nicht mehr zugegriffen werden // kann, wird das Objekt automatisch gelöscht

MD 5/02 Lebensdauer von Objekten in einem Programm in C++ ist der Programmierer für die Lebensdauer selbst angelegter Objekte selbst verantwortlich void example(int x) { tollesObjekt * obj = new tollesObjekt(x); obj->sayHello(); } Objekt bleibt im Speicher, der Zeiger ist aber nicht mehr zugänglich so entstehen Memory Leaks

MD 5/02 Lebensdauer von Objekten in einem Programm void example(int x) { // noch ein C++ Beispiel tollesObjekt * obj = new tollesObjekt(x); obj->sayHello(); delete obj; obj->sayHello(); // FEHLER! Objekt schon gelöscht } Zeigern sieht man nicht an, ob sie auf gültige Objekte zeigen oder nicht - große Fehlerquelle in Java gibt es deshalb keine Zeiger sondern Objekt- Referenzen, die intern mitzählen, wieviele Verweise es auf ein Objekt gibt - wenn der Referenz-Zähler Null enthält wird das Objekt gelöscht (es gibt kein delete)

MD 5/02 Lebensdauer von Objekten in einem Programm unabhängig von der Programmiersprache: ein Java- oder C++-Objekt existiert nur im Speicher und ist nach der Beendigung des Programms verschwunden gleiches gilt für Objekt-Referenzen oder Zeiger da Programme im allgemeinen nur kurz laufen (Maximum: die Zeit zwischen zwei Stromausfällen), werden Programmiersprachen-Objekte auch als "transient objects" bezeichnet (Objekte kurzer Lebensdauer) Häufig soll der Zustand eines Objektes jedoch länger erhalten bleiben, z.B. durch Speichern des Zustandes auf der Festplatte oder in einer Datenbank - die Objekte werden dadurch zu "persistent objects"

MD 5/02 Java-Beispiel: Persistenz durch Serialisierung Der Zustand eines Objektes kann z.B. in eine Datei ausgegeben werden, wenn alle Zustandsvariablen dieses unterstützen (wenn sie java.io.Serializable implementieren) import java.io.*; class Example implements Serializable { String importantState; // implements Serializable transient String unimportantState; }... ObjectOutputStream p = new ObjectOutputStream(...); p.writeObject(obj);...

MD 5/02 Persistente Objekte in verteilten Systemen in verteilten System haben die beteiligten Programme normalerweise unterschiedliche unvorhersagbare Laufzeiten der Aufenthaltsort eines Objektzustandes (Speicherbereich, Rechner) kann sich ändern Referenzen von verteilten persistenten Objekte dürfen sich aber nicht ändern - sie dürfen keine kurzlebigen Informationen (z.B. Zeiger auf Speicherbereiche eines Rechners) enthalten mögliche Lösung: Namensdienst, bei dem unter einem unveränderlichen Namen die aktuelle kurzlebige Referenz gespeichert werden kann oder: unveränderliche Referenz (Beispiel: random.org)

MD 5/02 Persistente Objekte in CORBA ORB und POA ermöglichen die Erstellung und Verwaltung von unveränderlichen Objekt-Referenzen für die Speicherung von Objekt-Zuständen kann man CORBA-PSS (Persistent State Service) nutzen –dient beim Server als Verbindungsglied zwischen Objekt-Servant und einer Datenbank (bzw. einer Datei) –automatische Code-Generierung aus einer "Persistant State Description Language (PSDL)"-Datei (ähnlich IDL) –kann Datenbank-Tabellen oder Dateien verwalten –ungeeignet für die Anbindung vorhandener Datenbank-Tabellen –die Konzepte des PSS lassen sich aber gut in eigenen Programmen verwenden

MD 5/02 Persistent State Service (PSS) storage home Konzept - stark vereinfacht storage objects PSDL Stubs & Skeletons PSS ist ein Service, der lokal im Server-Prozess verwendet wird - keine CORBA-Objekte Idee: "storage objects" haben ein Zuhause "storage home"-Objekte wissen, wie man "storage objects" findet

Beispiel: Benutzerdatenbank - persistente CORBA-Objekte // IDL... interface UnixUser // Zustand ist in Datenbank gespeichert { readonly attribute string sid; // eindeutiger String readonly attribute string login; readonly attribute long uid; readonly attribute long gid; readonly attribute string name; readonly attribute string homedir; attribute UnixUserStatus status; // NEW, READY,... };... interface UnixUserHome { UnixUser find_by_login (in string login); };

MD 5/02 Beispiel: Benutzerdatenbank UnixUserHome- Servant PostgreSQL- Datenbank JDBC-Treiber UnixUser- Servants Object Adapter ein zusätzlicher POA, der für die Aktivierung von persistenten Objekten konfiguriert ist

MD 5/02 zusätzlicher Portable Object Adapter: userdbPOA ORB RootPOA userdbPOA AOM active object map mdirska etest apolze * UnixUser- Servant UnixUser- Servant UnixUser- Servant Default UnixUser- Servant der Default-Servant soll bei Bedarf neue Servants erzeugen und aktivieren create & activate

POA Policies Policy ValuesdefaultRootPOAuserdbPOA PERSISTENT TRANSIENTXX X SYSTEM_ID USER_ID XX X NO_IMPLICIT_ACTIVATION IMPLICIT_ACTIVATION X X X RETAIN NON_RETAIN XXX USE_ACTIVE_OBJECT_MAP_ONLY USE_SERVANT_MANAGER USE_DEFAULT_SERVANT XX X UNIQUE_ID MULTIPLE_ID XX X SINGLE_THREAD_MODEL ORB_CTRL_MODELXXX

MD 5/02 Anwendung: Freischaltung von Benutzern Datenbank-RechnerFile-Server UnixUserHome UnixUserHomeDirCreator Desktop Client zur Freischaltung neuer Benutzer sind zwei Schritte nötig: 1.createHomeDir("/home/...", uid, gid) 2.user.status(UnixUserStatus.READY) beides soll nur zusammen ausgeführt werden - "ganz oder gar nicht"

MD 5/02 Verteilte Transaktionen mit CORBA CORBAservices - Transaction Service Transaktionen sollten folgende Eigenschaften haben (ACID): –Atomic - sie erscheinen nach außen wie eine Operation; wenn eine Transaktion abgebrochen werden muss wird der ursprüngliche Zustand wiederhergestellt (rolled back) –Consistent - Transaktionen halten das System in einem konsistenten Zustand, d.h., fundamentale Regeln des Systems werden nicht verletzt –Isolated - möglicherweise inkonsistente Zwischenzustände, die während der Ausführung einer Transaktion auftreten, sind nach außen nicht sichtbar –Durable - der Ergebnis-Zustand einer Transaktion kann und sollte dauerhaft bestehen bleiben, denn es handelt sich um einen gültigen konsistenten Zustand

MD 5/02 Das Client-Programm try { CORBA.Object obj = orb.resolve_initial_references("TransactionCurrent"); txn_current = CosTransactions.CurrentHelper.narrow( obj ); txn_current.begin(); hdc.createHomeDir(homedirpath, uid, gid); user.status(UnixUserStatus.READY); txn_current.commit(false); } catch ( org.omg.CORBA.TRANSACTION_ROLLEDBACK ex ) { System.out.println("Transaction rolled back !"); }

MD 5/02 Transaction Service - Bestandteile Transaction Service transaction context Client Transactional Server begin, commit, rollback Transactional Object kann Transaktion abbrechen Recoverable Server Recoverable Object Resource meldet Resource an nimmt am Entscheidungs- prozess teil transactional operation transactional operation

MD 5/02 two-phase commit protocol (2PC) - Phase 1 Client Coordinator commit prepare Resource VoteReadOnly VoteRollback VoteCommit wenn der Client die Transaktion ausführen möchte (commit) schickt der Transaktions- Koordinator zunächst an alle Resource-Objekte eine prepare-Nachricht wenn nur eines der Objekte "VoteRollback" antwortet muss die Transaktion abgebrochen werden Resources, die "VoteReadOnly" geantwortet haben, werden nicht weiter berücksichtigt

MD 5/02 two-phase commit protocol (2PC) - Phase 2 Client Coordinator TRANSACTION_ ROLLEDBACK- Exception rollback an alle, die "VoteCommit" geantwortet hatten Resource eine Resource hat mit "VoteRollback" geantwortet: Client Coordinator commit-Methode wird normal beendet commit an alle, die "VoteCommit" geantwortet hatten Resource keine Resource hat mit "VoteRollback" geantwortet: hier können die einzelnen commits noch schiefgehen Heuristic-Exceptions geben Auskunft über den Fehler Client kann beim Koordinator Infos über solche Fehler erfragen