CORBA = Common Object Request Broker Architecture. plattformunabhängige Middleware-Architektur für verteilte Objekte

Größe: px
Ab Seite anzeigen:

Download "CORBA = Common Object Request Broker Architecture. plattformunabhängige Middleware-Architektur für verteilte Objekte"

Transkript

1 CORBA 1 1 Standard CORBA = Common Object Request Broker Architecture plattformunabhängige Middleware-Architektur für verteilte Objekte OMG = Object Management Group Standardisierungsorganisation mit etwa 1000 Mitgliedern Teilbereiche der Standardisierung CORBA UML XMI... Formaler Standardisierungprozess Standard-Dokumente Definition von CORBA -Kompatibilität 2

2 2 Motivation Verteilte objektbasierte Programmierung verteilte Objekte mit definierter Schnittstelle Heterogenität in Verteilten Systemen verschiedene Hardware-Architekturen verschiedene Betriebssystem-Architkturen verschiedene Programmiersprachen Freiheitsgrade bei der Middleware-Implementierung CORBA schreibt keine Implementierung vor sondern Funktionalität CORBA fordert Interoperabilität verschiedener Implementierungen Anbindung an Altsysteme (Legacy) CORBA-Anwendungen sollen mit Altsystemen interagieren 3 3 Object Management Architecture, OMA Komponenten der OMA Anwendungsobjekte Vertical Facilities Horizontal Facilities ORB Naming Con- currency Persistence Life Cycle Properties Collections Security Trader Externalization Events Transactions Query Relationships Time Change Licensing Management CORBA Services 4

3 3.1 Anwendungsobjekte Verteilte CORBA-Objekte bilden eine Anwendung Kommunikation zwischen den Objekten über ORB monolithischer Ansatz: Objekt immer auf einem bestimmten Rechner interne Implementierung über Stellvertreterobjekte Aufrufer muss nicht unbedingt CORBA-Objekt sein Legacy-Anwendungen können Objektaufrufe durchführen Object Non-Object Knoten ORB Object Request Broker vermittelt Methodenaufrufe von einem zum anderen Objekt Rückgrat einer CORBA-Middleware mehrere interne Komponenten (teilweise nicht für Anwender sichtbar) z.b. Stellvertreterobjekte Interface Repository Aufrufer IDL DII Stubs ORB Interf. Objektimplementierung Static Skeleton DSI POA Implementation Repository ORB Core GIOP 6

4 3.3 CORBA-Services ORB-Erweiterungen Services bieten weitergehende Dienstleistungen an allgemein brauchbare und standardisierte Dienstleistungen z.b. Namensdienst (zum Auffinden von Objekten) z.b. Zeitdienst (zum Synchronisieren der Zeit) z.b. Sicherheistdienst (zur Zugriffskontrolle) CORBA-Services erscheinen als CORBA-Objekte Aufruf eines Dienstes über Methodenaufrufen System-API durch normale CORBA-Objekte CORBA-Facilities Facilities sind anwendungsorientierte Dienstleistungen im Gegensatz zu CORBA-Services (systemorientierte Dienstleistungen) Horizontale CORBA-Facilities Dienstleistungen über Anwendungsgebiete hinweg nutzbar z.b. Dokumentenbearbeitung, Druckdienst, Mobile Agenten,... Vertikale CORBA-Facilities Betrachtung einer Anwendungsdomäne (Domain Facilities) z.b. Dienste für Gesundheitswesen (Patientenverwaltung): CORBAmed, Produktmanagement, Telekommunikation, Finanzdienstleistungsgewerbe,... 8

5 3.5 CORBA-Implementierung OMA durch Funktionalität und Schnittstellen festgelegt Implementierung ist Sache eines CORBA-Herstellers (Vendor) CORBA-Implementierung muss nicht vollständige Spezifikation realisieren ORB-Core: ORB-Funktionen, Objektkommunikation Interoperabilität bei der Kommunikation mit ORBs anderer Hersteller Sprachunterstützung für mindestens eine Sprache keine Services oder Facilities vorgeschrieben Zertifizierung CORBA-Kompatibilität kann zertifiziert werden wird jedoch meist (noch) nicht gemacht 9 4 CORBA-Objekte Abstraktes objektbasiertes Programmiermodell Eigenschaften eines CORBA-Objekts verteilt aufrufbar Identität Zustand Attribute (von außen zugreifbare Instanzvariablen) Operationen (von außen zugreifbare Methoden) Wichtig CORBA-Objekt muss nicht identisch mit einem Objekt in einer Programmiersprache sein CORBA kann auch objektlose Programmiersprachen unterstützen, z.b. C 10

6 4.1 Interface-Definition-Language Schnittstelle von außen zugreifbare Attribute und Operationen müssen in Schnittstellendefinition deklariert werden Schnittstelle wird unabhängig von der benutzten Programmiersprache in einer Interface-Definition-Language (IDL) beschrieben Language-Mapping Abbildung von IDL-Konstrukten bzw. IDL-Typen auf unterstützte Programmiersprachen von CORBA unterstützte Sprachen Ada, C, C++, Java, Lisp, PL/I, Python, Smalltalk weitere inoffizielle Language-Mappings existieren,z.b. für Perl Interface-Definition-Language (2) IDL angelehnt an C++ geringer Lernaufwand eigene Datentypen Basistypen Aufzählungstyp zusammengesetzte Typen Module definieren hierarchischen Namensraum für Anwendungsschnittstellen und -typen Schnittstellen beschreiben einen von außen wahrnehmbaren Objekttyp Exceptions beschreiben Ausnahmebedingungen 12

7 4.1 Interface-Definition-Language (3) Beispiel: Kontoschnittstelle exception WrongAccountNumber { string errormsg; }; interface Account { readonly attribute double balance; }; double withdraw( in double amount ) raises WrongAccountNumber; double deposit( in double amount ) raises WrongAccountNumber; verteilte Objekte können Account-Schnittstelle implementieren Interface-Definition-Language (4) Basistypen Integer-Datentypen: short, unsigned short, long, unsigned long, long long, unsigned long long Zeichen: char, wchar Zeichensatz mehr oder weniger beliebig bei Parametertransport evtl. Umwandlung notwendig Fließkomma-Datentypen: float, double, long double Boolescher Typ: boolean Byte-Typ: octet Rahmentyp für alle IDL-Typen: any kann Werte beliebiger Typen speichern 14

8 4.1 Interface-Definition-Language (5) Komplexe Datentypen Typdefinition: typedef type name name wird für den evtl. zusammengesetzten Typ type definiert Strukturen: struct name { memberdef } name kann wie Typname benutzt werden Diskriminierte Varianten: union name switch( switchtype ) { unionmemberdef } kann Komponenten verschiedenen Typs enthalten nur eine der Komponenten kann einen Wert haben mit switchtype wird Typ bestimmt, dessen Werte eine der Komponenten auswählt (z.b. Aufzählungstyp) Interface-Definition-Language (6) Aufzählungstyp: enum name { constantdef } Konstanten werden im gleichen Namensraum abgelegt Sequenztyp: sequence < basetype [, maxlength] > tatsächliche Länge wird in sprachabhängiger Form gesetzt und abgefragt Zeichenketten: string [< maxlength >], wstring [< maxlength >] Festkommazahlen: fixed < digits, comapos > Felder: name [ constant ] Konstante constant gibt Elementanzahl an mehrdimensionale Felder möglich Wichtig: alle komplexen Datentypen müssen erst als Typdefinition deklariert werden bevor sie benutzt werden können! 16

9 4.1 Interface-Definition-Language (7) Exception-Definition Definition einer Ausnahme: exception name { memberdef } Komponenten ähnlich wie in einer Struktur Operationen aufrufbare Methode: resulttype name ( parameters ) [ raises exceptionlist ] als Ergebnistyp auch void benutzbar: kein Ergebnis exceptionlist ist mit Komma getrennte Liste von Exception-Namen Parameterdeklaration mit Komma getrennte Liste von Parameterdeklarationen: [ in out inout ] type name eingehende, ausgehende Parameter und beides mehrere Ergebniswerte pro Operation möglich Interface-Definition-Language (8) Parameterdeklaration (fortges.) Beispiel: Kontoschnittstelle mit out-parametern interface Account { readonly attribute double balance; void withdraw( in double amount, out double balance ) raises WrongAccountNumber; }; void deposit( in double amount, out double balance ) raises WrongAccountNumber; Typ void für kein Rückgabewert bei Operationen 18

10 4.1 Interface-Definition-Language (9) Objekttypen Namen von Schnittstellen (Interfaces) stehen für Objekttypen Parameter und Attribute können Objekttyp haben z.b.: attribute Account bankaccount; bankaccount kann Referenzen auf CORBA-Objekte vom Typ Account speichern Parameterübergabesemantik Basistypen, komplexe Typen: Call-by-Value Objekttypen: Call-by-Object-Reference seit CORBA 2.3 auch Value-Types ähnlich Objekttypen aber Call-by-Value-Übergabe Interface-Definition-Language (10) Konstantendefinition Name wird mit konstantem Wert verbunden z.b. const double limit = ; Name limit kann dann als Konstante verwendet werden Moduldefinitionen Beispiel: module CORBA {... } Verschachtelung der Module möglich innerhalb der Moduldefinition können definiert werden: Module Exceptions Konstanten Schnittstellen Typen (typedef u.a.) 20

11 4.1 Interface-Definition-Language (11) Vererbung Schnittstellen können voneinander erben interface limitedaccount : Account { void setlimit( in double newlimit ); }; mehrfache Vererbung möglich (mehrere Basis-Schnittstellen mit Komma getrennt) kein Overriding gleicher Methodenname mit gleichen Parameterdeklarationen darf nicht mehrfach vorkommen kein Overloading gleicher Methodenname mit verschiedenen Parameterdeklarationen darf nicht mehrfach vorkommen Interface-Definition-Language (12) Vererbung (fortges.) Diamond-Shape-Inheritance möglich Beispiel: interface A { long opa(); }; interface B : A {... }; interface C : A {... }; interface D : B,C {... }; Objekte vom Typ D besitzen eine Operation opa Schnittstellen erben automatisch von Object Basisoperationen definiert von CORBA 22

12 4.1 Interface-Definition-Language (13) Namensräume Module, Strukturen, Exceptions, Varianten und Schnittstellen spannen neuen Namensraum auf innere Namen verdecken äußere Namen qualifizierte Namen Namen des umgebenden Modules etc. verknüpft mit lokalem Namen durch doppelten Doppelpunkt z.b. CORBA::BAD_PARAM (bestimmte System-Exception) z.b. ::Account (Name Account im obersten Namensraum) bei Vererbung werden Namensräume der Basis-Schnittstellen importiert doppelte Belegung von Namen führt zu Qualifizierungszwang: Name kann nur als qualifizierter Name angesprochen werden Interface-Definition-Language (14) Namen innerhalb eines Namensraums darf ein Name nur einmal benutzt werden gilt auch für verschiedene Schreibweisen mit Groß- und Kleinbuchstaben z.b. neben Account darf es kein account geben in IDL verbotene Namen (wg. Schlüsselworte) können durch Voranstellen eines Unterstrichzeichens verwendet werden z.b. _module oder _Object 24

13 4.1 Interface-Definition-Language (15) Umsetzung von IDL in Sprachkonstrukte (z.b. C++) module MyModule { interface MyInterface { attribute long lines; void printline( in string toprint ); }; }; IDL namespace MyModule { C++ class MyInterface :... { public: virtual CORBA::Long lines(); virtual void lines( CORBA::Long _val ); void printline( const char *toprint );... }; }; Interface-Definition-Language (16) Umsetzung von IDL in Sprachkonstrukte (z.b. Java) module MyModule { interface MyInterface { attribute long lines; void printline( in string toprint ); }; }; package MyModule; Java namespace MyModule { C++ public class MyInterface interface MyInterface :... { extends... { public: int lines(); public virtual void CORBA::Long lines( int lines(); ); public virtual void void printline( lines( CORBA::Long _val ); void java.lang.string printline( const toprint char *toprint ); );... }; }; IDL 26

14 4.1 Interface-Definition-Language (17) Vorteile Schnittstellenbeschreibung unabhängig von Implementierungssprache ermöglicht Unterstützung vieler Programmiersprachen Nachteile Objektschnittstelle muss in IDL und in der Implementierungssprache beschrieben werden (letzteres kann teilweise automatisiert werden) IDL ist sehr ausdrucksstark (z.b. sequence) Sprachabbildung für Konstrukte, die in einer Programmiersprache nicht direkt vorhanden sind, ist kompliziert Fähigkeiten einer Sprache, die nicht in IDL beschrieben werden können, können nicht genutzt werden Objekterzeugung Beschreibung der IDL-Schnittstelle Implementierung des Servant Servant realisiert ein (oder auch mehrere) CORBA-Objekt(e) Auswahl einer Programmiersprache Umsetzung der IDL-Schnittstelle in ein Skeleton IDL Definition Skeleton Servant Servant Code Precompiler Compiler Skeleton wird in der Regel ausgefüllt mit Implementierungscode Prä-Compiler wird häufig IDL-Compiler genannt 28

15 4.2 Objekterzeugung (2) Instanziieren des CORBA-Objekts Instanziieren der Servant-Implementierung Aktivierung des Servants am Object-Adaptor eine Aufgabe des OA: Generierung der Objektreferenz Beispiel: POA mindestens eine POA-Instanz pro Adressraum (Server-Prozess) Aufruf von activate_object am POA Server activate_object POA Servant Objekterzeugung (3) Herausgabe der Objektreferenz Aufruf von servant_to_reference am POA liefert Objektreferenz auf CORBA-Objekt (nicht Servant) Realisierung der Objektreferenz ist sprachabhängig z.b. in Java: Stellvertreterobjekt (lokaler Stellvertreter ist optimiert) einfacher Servant Nutzung des Servants bei Parameterübergabe übergibt letztlich Objektreferenz implizite Aktivierung Betriebsart des POA Übergabe des Servant als Parameter aktiviert automatisch den Servant, falls noch nicht geschehen Beachte: Aktivierung ist identisch zum Exportieren in Java RMI 30

16 4.3 Objektnutzung Erzeugung eines Stubs Auswahl einer Programmiersprache für die Client-Seite Umsetzung der IDL-Schnittstelle in einen Stub IDL Definition Stub Stub Code Precompiler Compiler Objektnutzung (2) Empfang eines Parameters mit Objekttyp automatische Erzeugung einer neuen Objektreferenz aus dem Stub-Code realisiert auch entfernte Objektreferenz Objekttyp ist zur Compile-Zeit bekannt: Stub-Code kann erzeugt werden Aufruf von Operationen gemäß Sprachanbindung z.b. Java: Aufruf von Methoden am Stellvertreterobjekt Parameterübergabe Objekttypen: Übergabe der Objektreferenz Basistypen: Übergabe des abgebildeten Sprach-Datentyps komplexere Typen: Übergabe sprachabhängig 32

17 4.3 Objektnutzung (3) Parameterübergabe (fortges.) Übergabe bei out und inout Parametern sprachabhängig Problem: Programmiersprachen kennen meist keine Möglichkeit mehrere Ergebnisse zurückzugeben z.b. Java: Einführung von Holder-Klassen z.b. AccountHolder: kann eine Objektreferenz auf ein Objekt vom Typ Account aufnehmen Java-Referenz auf AccountHolder-Objekt wird als out oder inout Parameter übergeben Ergebnisparameter kann aus Holder-Objekt ausgelesen werden Objektnutzung (4) Typumwandlung Objektreferenz kann einen Typ aus der Vererbungshierarchie der Schnittstellen besitzen wahrer Objekttyp kann spezifischer in der Vererbungshierarchie sein Erzeugung einer anderen Objektreferenz mit anderem Typ narrow-operation: sprachabhängige Umsetzung z.b. Java: Helper-Klasse pro Objekttyp z.b. AccountHelper Aufruf der statischen Methode narrow mit Objektreferenz als Parameter erzeugt neue Objektreferenz vom Typ Account Umwandlung in weniger spezifischen Typ: immer möglich z.b. von Typ D nach A (Beispiel aus der Vererbungsfolie) Umwandlung in spezifischeren Typ: nur möglich wenn tatsächlich vorhanden (laufzeitabhängig) z.b. von Typ A nach B 34

18 4.3 Objektnutzung (5) Sprachabhängige Code-Generierung z.b. in Java wird aus IDL-Beschreibung neben Stub und Skeleton auch Holder- und Helper-Klasse generiert IDL Definition Skeleton Servant Servant Code Precompiler Stub Compiler Stub Code Hilfsklasse Hilfsklassen Code Initialisierung der Anwendung Initiale entfernte Objektreferenzen Namensdienst für Registrierung und Anfragen von Objektreferenzen Woher bekommt man die Referenz auf den Namensdienst? ORB-Interface: Anfrage nach initialen Referenzen z.b. orb.resolve_initial_reference( NamingService ); Vorkonfiguration durch Systembetreiber Alternative: Übergabe der Referenzen außerhalb des Systems ORB-Interface: Umwandlung in einen String: orb.object_to_string( objref ); Rückumwandlung: orb.string_to_object( str ); Referenz kann per String übermittelt werden, z.b. über Datei, TCP/IP, Standardeingabe, Kommandozeile... 36

19 5 Object-Adaptor Aufgaben des Objektadapters Generierung der Objektreferenzen Entgegennahme eingehende Methodenaufruf-Anfragen Weiterleitung von Methodenaufrufen an den entsprechenden Servant Aktivierung und Deaktivierung von Servants Authentisierung des Aufrufers (im Security-Service) Obligatorischer Adapter: Portable-Object-Adaptor definierte Funktionalität für die häufigsten Aufgaben Alternative Adapter: z.b. für objektorientierte Datenbank verbindet Datenbank mit CORBA Adapter exportiert Objekte der Datenbank als CORBA-Objekte und sorgt für Vermittlung Portable-Object-Adaptor (POA) Jeder Servant kennt seine POA-Instanz POA-Instanz kennt die an ihm angemeldeten Objekte POA stellt Kommunikationsplattform bereit und nimmt Aufrufe entgegen (für seine Objekte) Server POA Servant Skeleton ORB Core Aufruf 38

20 5.2 POA-Erzeugung Root-POA existiert in jedem ORB voreingestellte Konfiguration kann zur Aktivierung von Objekten verwandt werden Referenz auf Root-POA Anfrage am ORB mit: orb.resolve_initial_reference( RootPOA ); Weitere POAs mit unterschiedlichen Konfigurationen erzeugbar Erzeugung am RootPOA bzw. an untergeordnetem POA (Vater-POA) neuer POA bekommt eigenen Namen (String) baumförmige, hierarchische POA-Struktur mit Wurzel beim Root-POA POA-Instanzen teilen sich Kommunikationskanal Objektreferenz enthält POA-Name: POA kann ermittelt werden POA-Erzeugung (2) Policy-Objekte am POA-Interface zu erzeugen Angabe einer bestimmten Policy für eine Policy-Kategorie (entspricht Konfigurationsparameter) bei Erzeugung eines POA werden vorab erzeugte Policy-Objekte als Konfiguration übergeben Beispiel: Policy für Implicit-Activation-Policy Erzeugung am POA mit Aufruf von create_implicit_activation_policy() mögliche Policies (übergeben als Parameter) IMPLICIT_ACTIVATION für implizite Aktivierung NO_IMPLICIT_ACTIVATION für explizite Aktivierung 40

21 5.3 Deaktivierung und Aktivierung mit POA Objekte können ihren Servant und ihre POA-Instanz überleben Servants können deaktiviert werden POA kann deaktiviert werden Serverprozess kann beendet werden POA kooperiert mit einem Implementation-Repository Implementation-Repository hält dauerhafte Information über das CORBA- Objekt insbesonder wie dieses wieder aktiviert werden kann z.b. Programmdatei für Neustart Aufrufe deaktivierter Objekte landen beim POA Neuinstanziierung des Servants falls POA deaktiviert: Aufrufe landen beim Root-POA Neuinstanziierung des POA Laden des persistenten POA-Zustands: Neuinstanziierung des Servants Deaktivierung und Aktivierung mit POA (2) falls Server deaktiviert: Aufrufe landen beim Implementation-Repository Starten eines neuen Servers Root-POA wird aktiviert Aufruf wird an neue Kommunikationsadresse weitergeleitet (Location Forward) Root-POA erhält Aufruf: Neuinstanziierung von POA und Servant Aktivierungsmechanismus Speicherung von Daten und Protokoll zwischen Implementation- Repository und POA ist herstellerspezifisch JDK 1.4: orbd-prozess Unterstützung im RPC-Protokoll Location-Forward: Stubs werten Weiterleitung aus und kontaktieren Objekt an angegebener Kommunikationsadresse solange möglich 42

22 5.3 Deaktivierung und Aktivierung mit POA (3) Konfiguration des POA LifeSpan-Policy: mögliche Policy-Objekte erzeugt mit create_lifespan_policy TRANSIENT für Objekte, die Servant nicht überleben PERSISTENT für Objekte, die POA und Servant überleben können im PERSISTENT-Modus wird Objekt automatisch aktiviert, falls notwendig POA-Konfiguration Weitere Konfigurationsmöglichkeiten Request Processing Policy nur aktivierte Objekte sind bekannt ein Default-Servant kann für alle nicht aktivierten Objekte einspringen ein Servant-Manager kann für unbekannte Objekte einen Servant generieren Servant Retention Policy bei Default-Servant- oder Servant-Manager-Betrieb wird Servant für unbekanntes Objekt aktiviert (intern in Tabelle aktiver Objekte eingetragen) Thread Policy: multi-threaded oder single-threaded Aufrufbearbeitung pro Objekt ID Uniqueness Policy: eindeutige IDs über alle Zeit oder nicht ID Assignment Policy: system- oder benutzervorgegebene Objekt-IDs 44

23 6 Value-Types CORBA-Objekte Parameterübergabe immer mit Call-By-Object-Reference-Semantik Weitere Objektklasse: Value-Types Parameterübergabe immer mit Call-By-Value-Semantik ähnlich wie struct, union, enum, sequence etc. aber: sind Objekte Definition in IDL Methoden private und öffentliche Zustandskomponenten (State Members) Konstruktordefinitionen zur Initialisierung 45 6 Value-Types (2) Beispiel valuetype AccountVal { public short accountnr; private double balance; private Instanzvariable }; double withdraw( in double amount ); double deposit( in double amount ); factory init( in short accountnr ); Konstruktor Varianten abstrakte Value-Types: nur Methoden keinen Zustand Definition mit abstract valuetype konkrete Value-Types: Methoden und Zustandskomponenten 46

24 6.1 Vererbung Vererbung bei Value-Types einfache Vererbung von einem konkreten Value-Type mehrfache Vererbung von abstrakten Value-Types z.b.: valuetype LimitedAccountVal : AccountVal { private double limit; void setlimit( double lim ); }; Parameterübergabe Lokale Übergabe von Valuetypes Call-By-Object-Reference Entfernte Übergabe, d.h. Übergabe bei Methodenaufrufen an CORBA- Objekten Call-By-Value Strukturerhaltende Übergabe Valuetypes können Referenzen auf andere Valuetypes besitzen nil-referenzen möglich Objektstruktur wird bei Übergabe erhalten vgl. Java Serialisierung z.b. verkettete Listen, Bäume, Graphen 48

25 6.2 Parameterübergabe (2) Realisierung Marshaling der Zustände Unmarshaling: Aufbau der Objektstruktur von Value-Types Heterogenes System Value-Type-Objekte aus C++ können in Java wieder aufgebaut werden Voraussetzung: Abbildung der IDL-Typen in Sprachtypen (hier C++- bzw. Java-Klassen) ist bekannt dynamisches Laden von Code möglich, falls von Sprache unterstützt Übertragung eines CodeBase-Objekts zur Rückfrage nach URLs von Codestücken Implementierung von Value-Types stark abhängig vom Language-Mapping Verknüpfung mit CORBA-Objekten Value-Types können CORBA-Interface unterstützen z.b. valuetype AccountVal supports Account {... }; mit Registrierung beim POA wird Value-Type-Implementierung zum CORBA-Objekt Übergabe einer Referenz auf das Value-Type-Objekt möglich (Call-By-Value) Übergabe einer Referenz auf das CORBA-Interface möglich (Call-By-Object-Reference) 50

26 6.4 Abstract-Interfaces Spezielle Art von CORBA-Interfaces nicht zu verwechseln mit abstrakten Klassen und abstrakten Value-Types letztere definieren Klassen, Value-Types, die nicht instanziierbar sind CORBA s Abstract Interfaces kapseln Value-Types und CORBA-Objekte Value-Type implementiert (supports) abstraktes Interface CORBA-Objekt erbt von abstraktem Interface beide Varianten können als Parameter übergeben werden, die mit abstraktem Interface deklariert sind Entscheidung für Call-By-Value oder Call-By-Reference zur Laufzeit Value-Types mit Call-By-Value CORBA-Objekte mit Call-By-Reference Abstract-Interfaces (2) Beispiel abstract interface AbstractAccount { double withdraw( in double amount ); double deposit( in double amount ); }; valuetype AccountVal supports AbstractAccount {... }; interface Account : AbstractAccount {... };... void method( in AbstractAccount acc );... 52

27 7 Dynamic-Invocation-Interface (DII) Typ eines Objekts zur Entwicklungszeit einer Anwendung nicht bekannt z.b. Name-Server-Implementierung, Verzeichnisdienst etc. Wie aufrufen? Abfrage der Objektschnittstelle Methode get_interface() bei jedem CORBA-Objekt liefert Referenz auf CORBA-Objekte, die Schnittstelle eines Objekts beschreiben Methoden, Parameter und deren Typen können erfragt werden Dynamische Konstruktion der Aufrufparameter generische Aufrufschnittstelle create_request() bei jedem CORBA- Objekt Benennung der Methode als String Übergabe der Parameter eingepackt in Typ any 53 7 Dynamic-Invocation-Interface (2) Aufruf wird durch Request-Objekt realisiert CORBA::Object is_nil duplicate release get_interface create_request erzeugt... Request invoke send_oneway send_deferred get_response poll_response MyInterface eigentlicher Aufruf wird durch invoke() am Request-Objekt ausgeführt 54

28 7.1 Interface-Repository Verzeichnisdienst für Schnittstelleninformationen IDL-Konstrukte werden jeweils als CORBA-Objekt realisiert Zusammenhänge zwischen den Repository-Objekttypen: Repository ConstantDef TypeDef ModuleDef ExceptionDef InterfaceDef ConstantDef TypeDef ModuleDef ExceptionDef InterfaceDef AttributeDef ExceptionDef ConstantDef TypeDef ExceptionDef AttributeDef OperationDef Interface-Repository (2) Repräsentation von Typen durch TypeCode-Objekte Repräsentation der Basistypen: int, float, boolean Repräsentation zusammengesetzter Typen: union, struct, enum, sequence, string, array Repräsentation von Objekttypen: Interface-Repository-ID TypeCode-Objekte repräsentieren Typ und Struktur durch IDL-Typen TypeCode-Objekte haben Operation für Typvergleich TypeCode-Objekte haben Operationen zur Strukturerkundung (z.b. welchen Elementtyp hat eine sequence) 56

29 7.2 Aufrufarten Normaler Aufruf Aufruf von invoke am Request-Objekt kehrt zum Aufrufer zurück, wenn eigentlicher Aufruf durchgeführt Asynchroner Aufruf Aufruf von send_deferred am Request-Objekt eigentlicher Aufruf wird angestoßen Aufrufer kann weiterarbeiten Ergebnissynchronisation durch get_response Ergebnisabfrage (Polling) mit poll_response Aufrufarten (2) Datagramm-Aufruf Aufruf von send_oneway am Request-Objekt Aufruf wird angestoßen es wird nicht auf Ergebnis gewartet (Methode darf kein Ergebnis liefern) Aufruf muss nicht sicher durchgeführt werden ( May-be-Once-Semantik ) oneway-methoden werden mit dem Schlüsselwort oneway in IDL markiert 58

30 8 Objektschnittstelle Vorgegebene Methoden in CORBA::Object werden an alle CORBA-Objekte vererbt create_request erzeugt dynamischen Aufruf get_interface ermittelt Beschreibungsobjekt für Schnittstelle des Objekts (aus dem Interface-Repository, vom Typ CORBA::InterfaceDef) is_nil prüft, ob Referenz mit Objekt verbunden (Nil-Referenz ist nicht verbunden) duplicate erzeugt neue Objektreferenz zum selben Objekt release gibt erzeugte Objektreferenz frei (darf nicht mehr benutzt werden) 59 9 Kommunikationsprotokolle Innerhalb einer ORB-Instanz können Objekte mit herstellerspezifischem Protokoll kommunizieren Zwischen ORBs verschiedener Herstellern GIOP General Inter-ORB Protocol (standardisiert in CORBA) Basisprotokoll für RPC-basierte Objektaufrufe Common Data Representation (CDR) definiert Marshalling und Unmarshalling von IDL-Typen IIOP Internet Inter-ORB Protocol GIOP über TCP/IP Unterstützung durch den ORB für CORBA-Kompatibilität vorgeschrieben GIOP-Implementierungen über andere Protokolle möglich 60

31 9 Kommunikationsprotokolle (2) ESIOP Environment Specific Inter-ORB Protocols z.b. DCE/ESIOP Inter-ORB-Protokoll auf der Basis von DCE RPC IOR Interoperable Object Reference Darstellung einer Objektreferenz als IDL-Datenstruktur muss verwendet werden für GIOP Repräsentation als String möglich (object_to_string) Profile in der IOR für jedes Protokoll eigenes Profil möglich Objekt kann theoretisch mehrere Protokolle unterstützen z.b. IIOP und herstellerspezifisches Protokoll 61 9 Kommunikationsprotokolle (3) IOR-Profil für IIOP Eintragung eines Profils Typ des Objekts: Interface-Repository-ID Hostname des POA TCP/IP-Portnummer des POA Name des POA ObjektID: eindeutiger Bezeichner innerhalb des POA Gängige Implementierung in Standard-ORBs Nutzung von IIOP auch innerhalb des ORBs IOR wird immer als eindeutiger Objektbezeichner benutzt 62

32 10 Naming-Service CORBA-Spezifikation eines Namensdienstes hierarchischer Namensraum (baumförmig ähnlich Dateisystem) Namen bestehen aus mehreren Silben z.b. < "usr"; "home"; "myobject" > (Entsprechung im Dateisystem wäre "/usr/home/myobject" ) Schnittstelle des Namensdienstes ist in IDL beschrieben ansprechbar als CORBA-Objekte Naming-Service (2) Beispiel eines Namensbaums Objekt des Namensdienstes usr NamingContext services system NamingContext NamingContext Object home www ftp NamingContext Object Object myobject Object Kontextobjekte wirken wie Verzeichnisse im Dateisystem 64

33 10 Naming-Service (3) Schematische Schnittstelle eines Naming-Context-Objekts und des Binding-Iterators NamingContext resolve list destroy new_context unbind bind rebind bind_context rebind_context bind_new_context BindingIterator next_one next_n destroy beliebige Objekte können gebunden (bind) und mit Namen wieder gesucht werden (resolve) Auflistung erfolgt durch Iterator-Pattern (list) Vergleich mit Anforderungen CORBA hat ein monolithisches Objektmodell Eindeutige Objektbezeichner für Parametertransport IOR mit jeweiligen Profilen IIOP: Hostname, Portname und ObjektID identifizieren Objekt Erzeugung neuer verteilter Objekte Erzeugung eines Servants, Aktivieren des Servants implizites oder explizites Aktivieren Factory-Objekt mit create-methode (Factory Pattern) 66

34 11 Vergleich mit Anforderungen (2) Schnittstellenspezifische Stellvertreterobjekte Stubobjekte pro IDL-Interface implementieren Methoden und Attribute aus der IDL-Beschreibung RPC-basiertes Kommunikationsprotokoll GIOP bzw. IIOP standardisiertes Inter-ORB-Protokoll beliebige eigene Protokolle verwendbar Codierung der Adressen in IOR-Profilen Parameterübergabe IOR wird als Objektbezeichner bei Parameterübergabe übermittelt ein ausgewähltes Profil bestimmt Typ der zu instanziierenden lokalen Stub- Implementierung Vergleich mit Anforderungen (3) Automatische Generierung der Stellvertreter IDL-Compiler (eigentl. Präcompiler) erzeugt Stellvertreter und Skeletons Namensdienst zum Finden von Objekten konfigurierter Namensdienst über ORB-Interface erreichbar resolve_initial_reference( NamingService ); 68

35 11.1 Zusätzliche Eigenschaften Aktivierung und Deaktivierung nicht im Detail spezifiziertes Konzept zur Aktivierung und Deaktivierung persistente Objektreferenzen durch POA-Konfiguration Implementierung des Aktivierungsmechanismus ist herstellerabhängig Flexibler Objektadapter POA ServantManager für dynamisch erzeugte Servants DefaultServant für Anbindung an große Objektmengen (z.b. Datenbankzugang) RMI über IIOP Verknüpfung von RMI und CORBA Verwendung von Java-RMI Kommunikation über IIOP statt JRMP über IIOP ansprechbare RMI-Objekte werden RMI/IDL-Objekte genannt Interoperabilität mit der CORBA-Welt RMI/IDL-Objekte von CORBA aus ansprechbar kein IDL erforderlich Java-to-IDL-Mapping (umgekehrte Abbildung) Tool (rmic -idl) kann IDL-Datei aus Java-Klasse erzeugen (für CORBA-Umgebungen) Einsatzgebiet unter anderem bei Enterprise Java Beans (EJB) 70

36 12.1 Einschränkungen Einschränkungen des Java-to-IDL-Mappings Konstanten in Remote-Interfaces müssen primitiven Typs oder vom Typ String und zur Compile-Zeit auswertbar sein keine gleich benannten Methoden in zwei gemeinsam geerbten Interfaces Methodennamen keine Namen erlaubt, die mit IDL-Namenskonvertierung kollidieren (Name Mangling), z.b. Methodenname object und _object keine Methoden mit Namen, die sich nur in Groß-, Kleinschreibung unterscheiden nicht auf Sharing von Stub-Objekten verlassen (==-Operator) keine Garbage-Collection möglich Parameterübergabe Übergabe von Referenzen auf RMI/IDL-Objekte Übergabe bei Kommunikation mit Standard-RMI-Objekt Kommunikation über JRMP RMI-IIOP-Stub wird serialisiert und deserialisiert Übergabe bei Kommunikation mit RMI/IDL-Objekt IOR wird übergeben spezielle Tagged-Component enthält Codebase für Stubklasse (für Java) Stubs müssen bereitgestellt werden (für andere Sprachen) Übergabe bei Kommunikation mit Standard-CORBA-Objekt per IIOP (z.b. bei CORBA-Objekten in Java) IOR wird übergeben Stub wird statisch bereitgestellt 72

37 12.2 Parameterübergabe (2) Übergabe von Referenzen auf Standard-RMI-Objekte Übergabe bei Kommunikation mit Standard-RMI-Objekt Deserialisieren der Stubobjekte Übergabe bei Kommunikation mit RMI/IDL-Objekt nicht möglich theoretisch realisierbar innerhalb von Java: serialisierter Stub in ein IOR- Profile codieren Übergabe bei Kommunikation mit Standard-CORBA-Objekt per IIOP (z.b. bei CORBA-Objekten in Java) nicht möglich Parameterübergabe (3) Übergabe von Referenzen auf Standard-CORBA-Objekte Übergabe bei Kommunikation mit Standard-RMI-Objekt nicht möglich Übergabe bei Kommunikation mit RMI/IDL-Objekt IOR wird übergeben Stub wird statisch bereitgestellt Übergabe bei Kommunikation mit Standard-CORBA-Objekt per IIOP (z.b. bei CORBA-Objekten in Java) IOR wird übergeben Stub wird statisch bereitgestellt 74

38 12.2 Parameterübergabe (4) Übergabe von Java-Datentypen Umwandlung in primitive IDL-Typen umgekehrte Abbildung Übergabe von Java-Objekten Objekte müssen serializable oder externalizable sein Umwandlung in IDL-Value-Types (Objekte, die per Call-by-Value übergeben werden) Transport als marshalled Data der Objekte Klassen müssen lokal verfügbar sein (für Java wird Codebase übermittelt) Umwandlung gilt auch für Arrays Erzeugen eines RMI-IIOP-Objekts Übliches Vorgehen Implementierungsklasse erbt/implementiert mind. ein Remote-Interface Implementierungsklasse erbt von javax.rmi.portableremoteobject vorbereitet für entfernte Aufrufe: exportiert Alternative Implementierungsklasse erbt/implementiert mind. ein Remote-Interface manuelles Vorbereiten für entfernte Aufrufe: Exportieren Aufruf von javax.rmi.portableremoteobject. exportobject( obj,... ) Objekt kann sowohl über IIOP als auch über JRMP exportiert werden mind. ein expliziter Export notwendig 76

39 12.3 Erzeugen eines RMI-IIOP-Objekts (2) Erzeugung der Stub- und Tie-Klassen Tie-Klasse dient als Server-Stub / Skeleton rmic-aufruf mit Option -iiop automatische Aktivierung Referenzweitergabe (Implicit Activation) Alternative: explizites Aktivieren z.b. an bestimmtem POA wg. Konfiguration (z.b. persistente Referenzen) Holen einer Instanz der Tie-Klasse spezielle Tie-Klasse: rmic -iiop -poa statische Methode an Utility-Klasse erzeugt konfigurierte Tie-Instanz Aktivieren des Objekts durch Übergabe des Tie-Klassen-Objekts an POA (activate_object) Typumwandlung Narrow-Operation auf RMI/IDL-Objekte statische Methode narrow an javax.rmi.portableremoteobject Beispiel: obj= ns.resolve( MyAccount ); // Namensdienst acc= (Account)PortableRemoteObject.narrow( obj, Account.class ); interner Ablauf: narrow-methode erzeugt neuen Stub, passend zum Interface Account Rückgabe als Java-Object (wg. generischer Implementierung) muss noch gecastet werden 78

40 13 Fault-Tolerant-CORBA CORBA-Erweiterung für fehlertolerante Objekte seit CORBA 3.0 im Standard integriert Middleware-Erweiterung (monolithischer Ansatz) für Objektgruppen- Referenzen Fehlertoleranz Ausfälle sollen toleriert werden Replikation des verteilten Objekts mehrere Instanzen der Objektimplementierung (Servants) in unterschiedlichen Ausfallbereichen (Orten, Rechnern) transparentes Aufrufen fehlertoleranter Objekte (Replikationstransparenz) transparentes Umschalten auf Alternativ-Servant (Fehlertransparenz) Fault-Tolerant-CORBA (2) Fault-Tolerance-Domains administrativer Bereich, in dem fehlertolerante Objekte etabliert werden können gekennzeichnet durch eindeutigen Identifikator und zentrale Verwaltungsinstanzen Objekt-Factory Replikationsmanager Objektgruppen-Manager Property-Manager 80

41 13 Fault-Tolerant-CORBA (3) Objektgruppe Menge von normalen CORBA-Objekten (Replikate), die fehlertolerantes Objekt bilden Standard-Objektreferenz und Standard-IOR für Replikate Objektgruppenreferenz und IOGR (Interoperable Object Group Reference) für Gruppe Fault-Tolerant-CORBA (4) Replikationsstrategien STATELESS: Objekt hat keinen Zustand (einfach) COLD_PASSIVE: mehrere Replikate, eines ist Primärreplikat (Primary) Primary beantwortet Anfragen periodische Zustandsspeicherungen des Primary plus Logging von Aufrufen bei Fehler: Sekundärreplikat (Secondary) wird auf letzten Stand gebracht; fehlende Aufrufe werden nachgeholt ; wird neuer Primary WARM_PASSIVE: wie COLD_PASSIVE aber Secondaries werden periodisch auf Stand gebracht schnellere Fehlererholung 82

42 13 Fault-Tolerant-CORBA (5) Replikationsstrategien (fortges.) ACTIVE: alle Replikate führen jeden Aufruf aus erfordert deterministische Aufrufbearbeitung (evtl. Einschränkung von Nebenläufigkeit) bei Fehlererholung Zustandstransfer ACTIVE_WITH_VOTING: zusätzliche Abstimmung über Ergebnis (zur Zeit noch nicht standardisiert) Fault-Tolerant-CORBA (6) Konsistenzstrategien CONS_INF_CTRL: Kontrolle der Konsistenz durch Infrastruktur (ORB) FT-ORB führt Zustandssicherung (Checkpointing) und Logging von Aufrufen durch FT-ORB führt Fehlererholung durch strenge Konsistenz der Replikate CONS_APP_CTRL: Kontrolle der Konsistenz durch Anwendungsobjekt Konsistenz kann schwächer sein Logging und Erholung muss durch Anwendung erfolgen 84

43 13 Fault-Tolerant-CORBA (7) Gruppenverwaltung MEMB_INF_CTRL: Gruppenverwaltung durch FT-ORB (Infrastruktur) automatisches Nachstarten von Replikaten durch den FT-ORB MEMB_APP_CTRL: Gruppenverwaltung durch das Anwendungsobjekt neue Replikate müssen durch Anwendungsobjekt erzeugt werden Objektgruppen-Manager verwaltet Mitglieder Fault-Tolerant-CORBA (8) Architekturüberblick ReplicationManager GenericFactory PropertyManager ObjectGroupManager Rechner 1 ORB, Logging, Recovery Rechner 2 ORB, Logging, Recovery IOGR Servant Factory Servant Factory 86

44 13.1 Erzeugung eines fehlertoleranten Objekts Zentrale Instanz pro FT-Domäne: Generic-Object-Factory Aufruf create_object erzeugt neues FT-Objekt Properties bestimmen Strategien Property-Manager nimmt Properties entgegen Anwendung von Properties als Default-Properties, typabhängige Properties, Properties zur Generierungszeit oder Laufzeitproperties z.b. CONS_INF_CTRL Angabe von möglichen Orten (weitere Factories zur Erzeugung der Replikate) Angabe von Mindestgrößen für Replikatmenge automatische oder anwendungsabhängige Erzeugung der ersten Replikate evtl. Einrichtung der Logging- und Checkpointing-Mechanismen Erzeugung der Objektgruppen-Referenz und der IOGR IOGR und Objektaufrufe Spezielle IOR mit zusätzlichen Profilen ein IIOP-Profile für jedes bekannte Replikat Kennzeichnung der Profile als Objektgruppe (Tagged Component TAG_FT_GROUP enthalten) Benennung der Objektgruppe eindeutiger Objektgruppenbezeichner Version der IOGR laufende Nummer für IOGR-Versionen Aufruf über IOGR Stub wählt IIOP-Profil eines Primary aus (Tagged Component TAG_FT_PRIMARY enthalten) ansonsten beliebiges IIOP-Profil 88

45 13.2 IOGR und Objektaufrufe (2) Verhalten im Fehlerfall Ausprobieren aller vorhandenen Profile bis Aufruf fehlerfrei durchgeführt werden kann falls kein Profil funktioniert: Ansprechen des Replication-Managers und Anfordern einer neueren IOGR Wiederholung des Prozederes Erneuern der IOGR neue Replikate und fehlerhafte Replikate lassen IOGR-Information veralten jeder ORB überprüft Version der verwendeten IOGR bei Aufrufen Versionsnummer wird beim Aufruf als Kontextinformation mitgegeben spezieller Location-Forward sendet neue IOGR zurück IOGR und Objektaufrufe (3) Verhalten von Legacy-ORBs können Objekt ansprechen besitzen aber nicht die Fehlererholungseigenschaften auf Client-Seite keine alternative Profile, keine Erneuerung der IOGR Aufrufsemantik strikte Einhaltung der At-Most-Once-Semantik auch im Fehlerfall Übermittlung von zusätzlichen Kontextinformation pro Aufruf Aufruf-Identifikator, Client-Identifikator kann dazu benutzt werden, mehrfache Aufrufe auch an mehreren Replikaten zu erkennen 90

46 13.3 Fehlererkennung Fehlererkennung mehrere Komponenten in einer FT-Domäne zur Fehlererkennung (Fault Detector, Fault Notifier) Überprüfung der Replikate periodisches Prüfen (Pull) periodisches Rückmelden durch Replikate (Push) Stellvertreterprüfung (ein Stellvertreter wird für eine Menge von Objekten an einem Ort geprüft) Fehleranalyse Zusammenfassung von erkannten Fehlern Fehlermeldung Meldung an den Replikations-Manager Einleitung der Fehlererholung z.b. Primary wechseln Proprietäre Protokoll FT-CORBA-Standard basiert auf IIOP Einfügen von proprietären Protokollen durch Gateway-Server Gateway nimmt IIOP-Anfrage an und leitet sie mit anderem Protokoll weiter Beispiel: Gateway für Multicast-Protokolle Anfrage wird an alle Replikate mittels Multicast verschickt (interessant bei aktiver Replikation) evtl. Totally-Ordered Multicasts für deterministische Bearbeitung der Aufrufe mehrere Gateways für Fehlertoleranz notwendig jeder Gateway wird durch eigenes IIOP-Profil adressiert Gateways sind für Aufrufer transparent 92

47 13.5 Fehlererholung: Fallstudie Konfiguration Replikationsstrategie WARM_PASSIVE oder COLD_PASSIVE Konsistenzstrategie CONS_INF_CTRL Mehrere Replikate eines ist Primary und beantwortet Aufrufe alle Replikate implementieren Interface Checkpointable oder Updateable über Interfaces kann gesamter Replikatzustand ausgelesen oder gesetzt werden Checkpointing FT-ORB liest periodisch Zustand des Primaries aus und speichert diesen lokal Fehlererholung: Fallstudie (2) Logging FT-ORB protokolliert alle Aufrufe seit dem letzten Checkpoint Fehlererkennung Primary stirbt Fault-Detector erkennt Fehler Fehler wird schließlich an den Replication-Manager gemeldet dieser leitet Recovery ein, d.h. bestimmt neuen Primary evtl. neues Replikat erzeugen und einfügen IOGR wird neu erzeugt (neuer Primary rein, alter Primary raus) 94

48 13.5 Fehlererholung: Fallstudie (3) Recovery Umschalten nach Fehlererkennung auf alternativen Primary neuer Primary wird auf letzten Zustand initialisiert alle fehlenden Aufrufe werden eingespielt Anfragen aus dem Netz werden beantwortet Vergleich mit Anforderungen FT CORBA hat wie CORBA ein monolithisches Objektmodell Eindeutige Objektbezeichner für Parametertransport IOGR mit jeweiligen Profilen Objektgruppenbezeichner, FT-Domänenname IIOP-Profile für jedes Replikat (für jeden Primary, für jedes Gateway) Erzeugung neuer verteilter Objekte Factory-Objekt (Generic-Factory am Replication-Manager) mit create-methode (Factory Pattern) anwendungsspezifische Replikaterzeugung: Servant-Erzeugung anwendungsspezifisches Gruppenmanagement 96

49 14 Vergleich mit Anforderungen (2) Schnittstellenspezifische Stellvertreterobjekte Stubobjekte pro IDL-Interface implementieren Methoden und Attribute aus der IDL-Beschreibung RPC-basiertes Kommunikationsprotokoll IIOP-Zugang zu Replikaten IIOP-Zugang zu Gateways, die mit eigenen Protokollen (z.b. Totally- Ordered-Multicast) weiterleiten eigene Protokollimplementierungen in Stellvertretern Parameterübergabe IOR/IOGR wird als Objektbezeichner bei Parameterübergabe übermittelt Vergleich mit Anforderungen (3) Automatische Generierung der Stellvertreter IDL-Compiler (eigentl. Präcompiler) erzeugt Stellvertreter und Skeletons Namensdienst zum Finden von Objekten konfigurierter Namensdienst über ORB-Interface erreichbar resolve_initial_reference( NamingService ); 98

50 14.1 Zusätzliche Eigenschaften Unterstützung von Fehlertoleranz transparente Integration von Objektgruppenreferenzen Integration von Replikations- und Konsistenzstrategien Zustandssicherung, Logging von Aufrufen Konzept für Fehlererkennung und Verwaltung einer FT-Domäne Replikationsmanager 99

E CORBA. 1 Standard. 2 Motivation. 3 Object Management Architecture, OMA. 1 Architekturen für verteilte Objekte. 3 Architekturen für verteilte Objekte

E CORBA. 1 Standard. 2 Motivation. 3 Object Management Architecture, OMA. 1 Architekturen für verteilte Objekte. 3 Architekturen für verteilte Objekte 1 Standard CORBA CORBA = Common Object Request Broker Architecture plattformunabhängige Middleware-Architektur für verteilte Objekte OMG = Object Management Group Standardisierungsorganisation mit etwa

Mehr

explizite, orthogonale Interaktion Verteilte Anwendungen und Middleware uniforme / nicht-uniforme Interaktion implizite, nicht-orthogonale Interaktion

explizite, orthogonale Interaktion Verteilte Anwendungen und Middleware uniforme / nicht-uniforme Interaktion implizite, nicht-orthogonale Interaktion Verteilte Anwendungen und Klassifikation von Interaktionsformen explizit implizit orthogonal nicht-orthogonal uniform nicht-uniform transparent nicht-transparent explizite, orthogonale Interaktion weit

Mehr

Projektgruppe 453: Entwurf eines Managementwerkzeugs zur Verwaltung von Sicherheitsdiensten für komplexe eingebettete Dienstesysteme

Projektgruppe 453: Entwurf eines Managementwerkzeugs zur Verwaltung von Sicherheitsdiensten für komplexe eingebettete Dienstesysteme Titel CORBA Eine Middleware-Plattform für objektorientierte Technologien von Martin Villis 6. Mai 2004 Projektgruppe 453: Entwurf eines Managementwerkzeugs zur Verwaltung von Sicherheitsdiensten für komplexe

Mehr

CORBA. Systemprogrammierung WS 2006-2007

CORBA. Systemprogrammierung WS 2006-2007 CORBA Systemprogrammierung WS 2006-2007 Teilnehmer: Bahareh Akherattalab Babak Akherattalab Inhaltsverzeichnis: Verteilte Systeme Vergleich zwischen lokale und verteilte Systeme Verteilte Anwendungen CORBA

Mehr

3.2 Der CORBA-Standard Common Object Request Broker Architecture

3.2 Der CORBA-Standard Common Object Request Broker Architecture 3.2 Der CORBA-Standard Common Object Request Broker Architecture (Bildquelle: OMG) Kapitel 3.2: Vorlesung CORBA 1 CORBA Middleware im Ueberblick G CORBA = Common Object Request Broker Architecture. Standard

Mehr

COMMON OBJECT REQUEST BROKER ARCHITECTURE. Dmytro Pyvovar Otto-von-Guericke Universität Magdeburg

COMMON OBJECT REQUEST BROKER ARCHITECTURE. Dmytro Pyvovar Otto-von-Guericke Universität Magdeburg COMMON OBJECT REQUEST BROKER ARCHITECTURE Dmytro Pyvovar Otto-von-Guericke Universität Magdeburg Gliederung Motivation Was ist CORBA? Object Management Architecture (OMA ) Interface Definition Language

Mehr

Hello World from CORBA

Hello World from CORBA Hello World from CORBA ein erster Überblick Aufruf einer Objekt-Methode Client gettemperature() Thermometer Objekt- Implementation Thermometer th = new Thermometer(); double t = th.gettemperature(); th

Mehr

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

CORBA-Konzept. Ziele. Common Object Request Broker Architecture CORBA. Plattformunabhängige Kommunikation Transparente Verteilung von Objekten CORBA-Konzept Ziele Common Object Request Broker Architecture CORBA Plattformunabhängige Kommunikation Transparente Verteilung von Objekten CORBA-Konzept Object Management Group Spezifiziert den CORBA-Standard

Mehr

5.1 Middleware für verteiltes Programmieren. 5 Middleware und verteilte Anwendungen: CORBA. 5.2 CORBA-Überblick. 2 Literatur, URLs.

5.1 Middleware für verteiltes Programmieren. 5 Middleware und verteilte Anwendungen: CORBA. 5.2 CORBA-Überblick. 2 Literatur, URLs. 5 Middleware und verteilte Anwendungen: CORBA 5 Middleware und verteilte Anwendungen: CORBA 5 Middleware und verteilte Anwendungen: CORBA 5.1 Middleware für verteiltes Programmieren 5.1 Middleware für

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

Inhaltsverzeichnis. Zusammenfassung CORBA

Inhaltsverzeichnis. Zusammenfassung CORBA Inhaltsverzeichnis 1 Was und wofür ist CORBA?... 2 1.1 Problematik in Verteilten Systemen... 2 1.2 Entwurfszeile... 2 2 Zweck und Ziele von OMG?... 2 3 Was ist eine Schnittstellenarchitektur?... 2 3.1

Mehr

Modul Software Komponenten 10 Komponentenarchitektur

Modul Software Komponenten 10 Komponentenarchitektur Modul Software Komponenten 10 Komponentenarchitektur Teil 3 Peter Sollberger Eine erste CORBA Anwendung Inhalt Dienstag, 4. November Object Request Broker CORBA Architektur und Komponenten (Teil 1) Übung:

Mehr

Kommunikation. Björn und Georg

Kommunikation. Björn und Georg Kommunikation Björn und Georg CORBA CORBA (Common Object Request Broker Architecture) Entwicklung der OMG ( Object Management Group) Zusammenschluss von 800 Firmen Hardware- und Progammiersprachen-unabhängiges

Mehr

1. Sie können die zentrale Idee und Bedeutung einer Schnittstelle, wie sie schon im RPC verwendet wird, erklären.

1. Sie können die zentrale Idee und Bedeutung einer Schnittstelle, wie sie schon im RPC verwendet wird, erklären. CORBA Lernziele 1. Sie können die zentrale Idee und Bedeutung einer Schnittstelle, wie sie schon im RPC verwendet wird, erklären. Zentrale Idee: Schnittstelle: - mit einer Schnittstelle beschreibt man

Mehr

2 Literatur, URLs. 1 Überblick

2 Literatur, URLs. 1 Überblick G und verteilte Anwendungen: CORBA G und verteilte Anwendungen: CORBA 2 Literatur, URLs G und verteilte Anwendungen: CORBA 1 Überblick Motivation Object Management Architecture (OMA) Anwendungsobjekte

Mehr

C Java RMI. 1 Java. Objektorientierte Sprache

C Java RMI. 1 Java. Objektorientierte Sprache Java RMI 1 1 Java Objektorientierte Sprache Objekte und andere Datentypen: int, float, boolean, etc. Objektreferenzen Verweise auf Objekte keine Zeiger, Adressen o.ä. Methodenaufruf bei vorhandener Objektreferenz

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

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

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

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

Mehr

CORBA. Beispiel einer Middleware-Plattform. Christian Fass WS 2013/14 Software Engineering: Basistechnologien

CORBA. Beispiel einer Middleware-Plattform. Christian Fass WS 2013/14 Software Engineering: Basistechnologien CORBA Beispiel einer Middleware-Plattform Christian Fass WS 2013/14 Software Engineering: Basistechnologien Allgemeines Common Object Request Broker Architecture Middleware: Vermittelt zwischen Obekten/Prozessen

Mehr

Common Object Request Broker Architecture (CORBA)

Common Object Request Broker Architecture (CORBA) 6. CORBA und CCM Peter Sturm Universität Trier Common Object Request Broker Architecture (CORBA) Standard der Object Management Group (OMG) 1991 CORBA 1.1 1994 CORBA 2.0 seit ca. 2001 CORBA 3.0 OMG Herstellerübergreifendes

Mehr

CORBA. Eine kurze Einführung. Common Object Request Broker Architecture. Ying Lu

CORBA. Eine kurze Einführung. Common Object Request Broker Architecture. Ying Lu CORBA Common Object Request Broker Architecture Eine kurze Einführung Ying Lu Verlauf der Präsentation Was ist CORBA CORBA-Architektur Ein Beispiel CORBA im Einsatz CORBA im Vergleich Was ist CORBA Begriffe

Mehr

Grundlagen und Implementation. Jan Kraft

Grundlagen und Implementation. Jan Kraft Grundlagen und Implementation Jan Kraft Gliederung 1 die OMG 2 Was ist CORBA? 3 Funktionsweise 3.1 die Interface Definition Language 3.2 Objekt Adapter 3.3 weitere Komponenten des ORB 3.4 InterORB Protokolle

Mehr

Corba. Systemprogrammierung WS 08 / 09. 21.01.09 Roginer - Fontana - Heinisch 1

Corba. Systemprogrammierung WS 08 / 09. 21.01.09 Roginer - Fontana - Heinisch 1 Corba Systemprogrammierung WS 08 / 09 21.01.09 Roginer - Fontana - Heinisch 1 Gliederung Definition Historie RPC Eigenschaften Architektur IDL-Beispiel Anwendungen OMA Services Facilities Client-Server

Mehr

CORBA Implementierung von Client und Server

CORBA Implementierung von Client und Server CORBA Implementierung von Client und Server J. Heinzelreiter WS 2003/04 Implementierung des Clients Initialisierung und Freigabe des ORBs. Mapping von Interfaces. Behandlung von Objektreferenzen. Verwaltung

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

CORBA (Überblick, IDL)

CORBA (Überblick, IDL) Friedrich-Alexander-Universität Erlangen-Nürnberg Konzepte von Betriebssystemkomponenten CORBA (Überblick, IDL) Radu Vatav 1. Geschichte Die Object Management Group (OMG), 1989 gegründet, hatte das Ziel

Mehr

Komponentenmodelle II

Komponentenmodelle II Komponentenmodelle II DCOM / CORBA Detlef Streitferdt Technische Universität Ilmenau DCOM Architektur Client Proxy Stub Component CoCreateInstance Security Provider DCE RPC Protocol Stack Security Provider

Mehr

Kap. 3 Verteilte Objektverwaltung

Kap. 3 Verteilte Objektverwaltung Kap. 3 Verteilte Objektverwaltung G 3.1Einführung in die verteilte Objektverwaltung (Distributed Management, DOM) Anforderungen Kurzübersicht Java RMI Microsoft COM+ CORBA G 3.2Der CORBA-Standard G 3.3Iona

Mehr

Verteilte objektorientierte Programmierung am Beispiel CORBA

Verteilte objektorientierte Programmierung am Beispiel CORBA Verteilte objektorientierte Programmierung am Beispiel CORBA Karsten Morisse km@kmorisse.de Vortrag FH Bielefeld 18. Juni 2002 Überblick 1. Verteilte Systeme 2. CORBA - Common Object Request Broker Architecture

Mehr

Theorie zu Übung 8 Implementierung in Java

Theorie zu Übung 8 Implementierung in Java Universität Stuttgart Institut für Automatisierungstechnik und Softwaresysteme Prof. Dr.-Ing. M. Weyrich Theorie zu Übung 8 Implementierung in Java Klasse in Java Die Klasse wird durch das class-konzept

Mehr

Softwareentwicklung in verteilten Umgebungen Middleware Case Studies (Coulouris et al., Kapitel 5 und 19) Dieter Schmalstieg Jens Grubert

Softwareentwicklung in verteilten Umgebungen Middleware Case Studies (Coulouris et al., Kapitel 5 und 19) Dieter Schmalstieg Jens Grubert Softwareentwicklung in verteilten Umgebungen Middleware Case Studies (Coulouris et al., Kapitel 5 und 19) Dieter Schmalstieg Jens Grubert Partly based on material by Victor García Barrios and Paul Krzyzanowski

Mehr

CORBA & CCM. )bersicht <? > CORBA CCM. Abschluss. CORBA :: Motivation. von Malte B. Blanken. CORBA :: Was ist das? Open Source Produkte

CORBA & CCM. )bersicht <? > CORBA CCM. Abschluss. CORBA :: Motivation. von Malte B. Blanken. CORBA :: Was ist das? Open Source Produkte CA :: Motivation CA & CCM von Malte B. Blanken Mr. X hat einen Windows!Server. Auf diesem bietet er einen Dienst an, welcher auf Anfrage die Zeichenkette "Das Leben ist sch#n!!$ ausgibt. Dieser Dienst

Mehr

Repetitorium Informatik (Java)

Repetitorium Informatik (Java) Repetitorium Informatik (Java) Tag 6 Lehrstuhl für Informatik 2 (Programmiersysteme) Übersicht 1 Klassen und Objekte Objektorientierung Begrifflichkeiten Deklaration von Klassen Instanzmethoden/-variablen

Mehr

Middleware. Einführung in CORBA. Middlewareplattform CORBA. CORBA: Eigenschaften

Middleware. Einführung in CORBA. Middlewareplattform CORBA. CORBA: Eigenschaften Middleware Einführung in CORBA Kay Römer Institut für Pervasive Computing ETH Zürich Infrastruktur für verteilte Systeme Unterstützt Enwickler bei Behandlung der Probleme verteilter Systeme Erleichtert

Mehr

Enterprise JavaBeans Überblick

Enterprise JavaBeans Überblick Enterprise JavaBeans Überblick 1. Überblick Java EE 5 und Komponententechnologien 3. Enterprise JavaBeans Architektur 4. Ressourcen Management und Primäre Services 5. Java Persistence: Entity Manager 6.

Mehr

Multiuser Client/Server Systeme

Multiuser Client/Server Systeme Multiuser /Server Systeme Christoph Nießner Seminar: 3D im Web Universität Paderborn Wintersemester 02/03 Übersicht Was sind /Server Systeme Wie sehen Architekturen aus Verteilung der Anwendung Protokolle

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

Client/Server-Systeme

Client/Server-Systeme Client/Server-Systeme Prof. Dr.-Ing. Wilhelm G. Spruth SS 2005 Teil 16 RMI, DCOM, Webservices cs 1100 ww6 sch 05-97 Remote Method Invocation (RMI) JVM JVM Client Server Stub Java Remote Skeleton Method

Mehr

Kap. 3 Verteilte Objektverwaltung

Kap. 3 Verteilte Objektverwaltung Kap. 3 Verteilte Objektverwaltung 3.1 Einführung in die verteilte Objektverwaltung (Distributed Object Management, DOM) Anforderungen Kurzübersicht Java RMI Microsoft COM+ CORBA 3.2 Der CORBA-Standard

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

Kapitel 9: Klassen und höhere Datentypen. Klassen und höhere. Objekte, Felder, Methoden. Küchlin/Weber: Einführung in die Informatik

Kapitel 9: Klassen und höhere Datentypen. Klassen und höhere. Objekte, Felder, Methoden. Küchlin/Weber: Einführung in die Informatik Klassen und höhere Datentypen Objekte, Felder, Methoden Küchlin/Weber: Einführung in die Informatik Klassen Klasse (class) stellt einen (i.a. benutzerdefinierten) Verbund-Datentyp dar Objekte sind Instanzen

Mehr

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung Javakurs FSS 2012 Lehrstuhl Stuckenschmidt Tag 3 - Objektorientierung Warum Objektorientierung Daten und Funktionen möglichst eng koppeln und nach außen kapseln Komplexität der Software besser modellieren

Mehr

Modul Software Komponenten 10 Komponentenarchitektur

Modul Software Komponenten 10 Komponentenarchitektur Modul Software Komponenten 10 Komponentenarchitektur Teil 2 Peter Sollberger Die verschiedenen Middleware - Ansätze Inhalt Montag, 3. November Remote Procedure Call (RPC) Fehlersemantiken Remote Message

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

Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden

Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden Kapitel 8 Programmierkurs Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln Objektorientierte Programmierung Methoden Überladen von Methoden Der this-zeiger Konstruktoren Vererbung WS 07/08

Mehr

7. Schnittstellen Grundlagen zu Schnittstellen. 7. Schnittstellen

7. Schnittstellen Grundlagen zu Schnittstellen. 7. Schnittstellen 7. Schnittstellen Grundlagen zu Schnittstellen 7. Schnittstellen Eine Schnittstelle (Interface) ist eine Spezifikation eines Typs in Form eines Typnamens und einer Menge von Methoden, die keine Implementierungen

Mehr

Mobile und Verteilte Datenbanken

Mobile und Verteilte Datenbanken Mobile und Verteilte Datenbanken Java RMI Vorlesung Wintersemester 2013/2014 groppe@ifis.uni-luebeck.de Institut für Informationssysteme Universität zu Lübeck Kommunikations-Middleware Bietet höhere Kommunikations-Dienste

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

E.1 Object Request Brokers

E.1 Object Request Brokers 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

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

Client/Server-Systeme

Client/Server-Systeme Client/Server-Systeme Prof. Dr.-Ing. Wilhelm Spruth SS 2005 Teil 15 CORBA cs 1000 ww6 wgs 05-97 Wiederverwendbarkeit von Code Vorbild: Entwurf/Bau einer Brücke im Bauingenieurwesen Objekttechnologie ermöglicht

Mehr

Objektorientierte Programmierung. Kapitel 12: Interfaces

Objektorientierte Programmierung. Kapitel 12: Interfaces 12. Interfaces 1/14 Objektorientierte Programmierung Kapitel 12: Interfaces Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2012/13 http://www.informatik.uni-halle.de/ brass/oop12/

Mehr

CORBA: Common Object Request Broker Architecture. Interoperabilität? CORBA die Idee. Die Object Management Group

CORBA: Common Object Request Broker Architecture. Interoperabilität? CORBA die Idee. Die Object Management Group CORBA: Common Request Broker Architecture Interoperabilität? Middleware-Architektur-Spezifikation der Management Group (OMG) Überblick: Die Management Group (OMG) Das Objektmodell der OMG Die Management

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

Kapitel 6. Vererbung

Kapitel 6. Vererbung Kapitel 6 Vererbung Vererbung 1 Ziele Das Vererbungsprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen

Mehr

3 Objektorientierte Konzepte in Java

3 Objektorientierte Konzepte in Java 3 Objektorientierte Konzepte in Java 3.1 Klassendeklarationen Fragen an die Klassendeklaration: Wie heißt die Klasse? Wer darf auf die Klasse und ihre Attribute/Methoden zugreifen? Ist die Klasse eine

Mehr

Präsentation Interfaces

Präsentation Interfaces Einführung in Java Präsentation Interfaces Nozar Delassaei Marvi Inhalt 1. Erinnerung Klasse Objekte Beispiel Klasse Abstrakte Klasse Beispiel Abstrakte Klasse Mehrfachvererbung-1 Mehrfachvererbung-2 2.

Mehr

Verteilte objektorientierte Programmierung am Beispiel CORBA. Dr. Christian Schröder Telelogic Deutschland GmbH

Verteilte objektorientierte Programmierung am Beispiel CORBA. Dr. Christian Schröder Telelogic Deutschland GmbH Verteilte objektorientierte Programmierung am Beispiel CORBA Dr. Christian Schröder Telelogic Deutschland GmbH Agenda 1. Was versteht man unter einem verteilten System? 2. Was ist CORBA? 3. Wie funktioniert

Mehr

Client/Server-Systeme

Client/Server-Systeme Fachbereich Informatik Projektgruppe KOSI Kooperative Spiele im Internet Client/Server-Systeme Vortragender Jan-Ole Janssen 26. November 2000 Übersicht Teil 1 Das Client/Server-Konzept Teil 2 Client/Server-Architekturen

Mehr

Java Beans (22.02.2001)

Java Beans (22.02.2001) Component Based Software Development Java Beans (22.02.2001) Stefan Jäger Robert Kalcklösch Veranstalter: M. Bittner W. Koch Inhalt Einführung in Java Die Java Beans Einsatz und Entwicklung von Beans Enterprise

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung 1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung 1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 34 Einstieg in die Informatik mit Java Klassen mit Instanzmethoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 34 1 Definition von Klassen 2 Methoden 3 Methoden

Mehr

Web-Services Implementierung mit Java

Web-Services Implementierung mit Java Web-Services Implementierung mit Java J. Heinzelreiter WS 2004/05 Java-APIs für Web-Services (1) Anwendungs-Code JAXR JAXM JAX-RPC SAAJ SOAP/SwA JWSDL WSDL XML/XML-Schema Web-Services/Java - 2 Java-APIs

Mehr

11.1 Indirektes Binden (3) 11.1 Indirektes Binden (4) Objektadapterkonfiguration. Unmittelbarer Vorteil des indirekten Bindens

11.1 Indirektes Binden (3) 11.1 Indirektes Binden (4) Objektadapterkonfiguration. Unmittelbarer Vorteil des indirekten Bindens 11.1 Indirektes Binden (3) Objektadapterkonfiguration Name wird bei Erzeugung vergeben wird genutzt u.a. für Property-Zugriffe Adapter-ID wird über Property konfiguriert Beispiel: MyAdapter.AdapterID=MyAdapter

Mehr

Client/Server-Programmierung

Client/Server-Programmierung Client/Server-Programmierung WS 2014/2015 Betriebssysteme / verteilte Systeme rolanda.dwismuellera@duni-siegena.de 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 rolanda.dwismuellera@duni-siegena.de Tel.: 0271/740-4050, Büro: H-B 8404 Stand: 15. Oktober 2015 Betriebssysteme / verteilte

Mehr

Übungsaufgabe Transaktion als Middleware

Übungsaufgabe Transaktion als Middleware Übungsaufgabe Transaktion als Middleware und Java Persistence API Client/Server Abstraktes Komponentenmodell Entscheidende Punkte Erweiterung der Invoke-Methode Context-Verwaltung Transaktionsbehandlung

Mehr

Anwendungsentwicklung mit Java. Grundlagen der OOP, Vererbung, Schnittstellen, Polymorphie

Anwendungsentwicklung mit Java. Grundlagen der OOP, Vererbung, Schnittstellen, Polymorphie Anwendungsentwicklung mit Java Grundlagen der OOP, Vererbung, Schnittstellen, Polymorphie Vererbung (1) 2 Problem: Objekte mit gleichen Attributen/Methoden, aber nicht völlig identisch, z.b., LKW, PKW,

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 41 Einstieg in die Informatik mit Java Vererbung Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 41 1 Überblick: Vererbung 2 Grundidee Vererbung 3 Verdeckte Variablen

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

COPPER Best Practices

COPPER Best Practices COPPER Best Practices Version 1.0.1 Wann sollte man überhaupt COPPER verwenden? Allgemein genau dann, wenn man von der COPPER Notation oder den COPPER-Features profitieren kann. Ein wesentliches Feature

Mehr

Praktikum Verteilte Anwendungen

Praktikum Verteilte Anwendungen Technische Informatik (Info II) -Sommersemester 2006 - Folie 1 / 27 0 Gliederung 1.) Kurze Wiederholung/ Einleitung 2.) RPC/ RMI 3.) Praktisches Beispiel 4.) Aufgabenblatt Folie 2 / 27 Wiederholung/ Einleitung

Mehr

ObjectBridge Java Edition

ObjectBridge Java Edition ObjectBridge Java Edition Als Bestandteil von SCORE Integration Suite stellt ObjectBridge Java Edition eine Verbindung von einem objektorientierten Java-Client zu einer fast beliebigen Server-Komponente

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

Übersicht. Vorstellung des OO-Paradigmas

Übersicht. Vorstellung des OO-Paradigmas Java, OO und UML Vorstellung des OO-Paradigmas Übersicht Umsetzung des OO-Paradigmas in Java Einführung (seeeeeehr rudimenter) in UML zur graphischen Darstellung von OO Grammatik und Semantik von Java

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

OOP und Angewandte Mathematik. Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik

OOP und Angewandte Mathematik. Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik WS 2011/12 Inhalt Test-Besprechung! Ziele verdeutlichen Große Bild von OOP Wiederholung: Einbettung als Technik

Mehr

Klassen und Objekte. Einführung in Java. Folie 1 von Mai Ivo Kronenberg

Klassen und Objekte. Einführung in Java. Folie 1 von Mai Ivo Kronenberg Klassen und Objekte Einführung in Java Folie 1 von 28 12. Mai 2011 Ivo Kronenberg Inhalt Objekte Klassendefinitionen Datenelemente (Klassenattribute) Instanzieren von Objekten Konstruktoren Vergleich primitive

Mehr

RO-Tutorien 3 / 6 / 12

RO-Tutorien 3 / 6 / 12 RO-Tutorien 3 / 6 / 12 Tutorien zur Vorlesung Rechnerorganisation Christian A. Mandery WOCHE 2 AM 06./07.05.2013 KIT Universität des Landes Baden-Württemberg und nationales Forschungszentrum in der Helmholtz-Gemeinschaft

Mehr

Prof. W. Henrich Seite 1

Prof. W. Henrich Seite 1 Klasse - ist ein benutzerdefinierter Datentyp (Referenztyp) - hat Datenelemente - hat Methoden - Konstruktor ist spezielle Methode zum Erstellen eines Objektes vom Typ der Klasse (Instanz) - jede Klasse

Mehr

Software Engineering Klassendiagramme Einführung

Software Engineering Klassendiagramme Einführung Software Engineering Klassendiagramme Einführung Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Aufgabe Erstellen Sie eine Klasse Person in Java. Jede Person verfügt

Mehr

C# im Vergleich zu Java

C# im Vergleich zu Java C# im Vergleich zu Java Serhad Ilgün Seminar Universität Dortmund SS 03 Gliederung Entstehung von C# und Java Überblick von C# und Java Unterschiede und Gemeinsamkeiten Zusammenfassung und Ausblick Entstehung

Mehr

Vererbung & Schnittstellen in C#

Vererbung & Schnittstellen in C# Vererbung & Schnittstellen in C# Inhaltsübersicht - Vorüberlegung - Vererbung - Schnittstellenklassen - Zusammenfassung 1 Vorüberlegung Wozu benötigt man Vererbung überhaubt? 1.Um Zeit zu sparen! Verwendung

Mehr

Programmierkurs C++ Abstrakte Klassen und Methoden

Programmierkurs C++ Abstrakte Klassen und Methoden Programmierkurs C++ Abstrakte Klassen und Methoden Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer #2 Vererbungshierarchie Obst double

Mehr

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck Javadoc Programmiermethodik Eva Zangerle Universität Innsbruck Überblick Einführung Java Ein erster Überblick Objektorientierung Vererbung und Polymorphismus Ausnahmebehandlung Pakete und Javadoc Spezielle

Mehr

Gliederung Einleitung Die Interprozess Kommunikation Zusammenfassung Fragen. .NET Remoting. André Frimberger

Gliederung Einleitung Die Interprozess Kommunikation Zusammenfassung Fragen. .NET Remoting. André Frimberger .NET Remoting André Frimberger 30.11.2004 André Frimberger.NET Remoting 1 Gliederung 1 Einleitung Was ist.net Remoting? 2 Die Interprozess Kommunikation Grundkonzept der Datenkanal Parameterübergabe Instanziierung

Mehr

Client-Server-Praktikum: Aufgabe 1 CORBA Naming Service

Client-Server-Praktikum: Aufgabe 1 CORBA Naming Service Client-Server-Praktikum: Aufgabe 1 CORBA Naming Service CORBAservices sind eine Sammlung von Diensten auf Systemebene, die CORBA-Objekte um mehrere nützliche Eigenschaften ergänzen bzw. den Umgang mit

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

Client/Server-Programmierung. CORBA: Schritt-für-Schritt Anleitung (Mini HOWTO)

Client/Server-Programmierung. CORBA: Schritt-für-Schritt Anleitung (Mini HOWTO) Client/Server-Programmierung WS 2007/08 CORBA: Schritt-für-Schritt Anleitung (Mini HOWTO) Version 1.2, 28.11.07 Schritt 1: Erstellung der IDL Zuerst muß eine IDL (Interface Definition Language)-Datei erstellt

Mehr

6 Zusammenschaltung von Web-Services

6 Zusammenschaltung von Web-Services 6 Zusammenschaltung von Web-Services Komposition von Web-Services zu neuen Web-Services abstrakte Beschreibung der internen Struktur Workflow-Konzept abstrakte Beschreibung der Zusammenhänge und Interaktionen

Mehr

5.5.8 Öffentliche und private Eigenschaften

5.5.8 Öffentliche und private Eigenschaften 5.5.8 Öffentliche und private Eigenschaften Schnittstellen vs. Implementierungen: Schnittstelle einer Klasse beschreibt, was eine Klasse leistet und wie sie benutzt werden kann, ohne dass ihre Implementierung

Mehr

Probeklausur: Programmierung WS04/05

Probeklausur: Programmierung WS04/05 Probeklausur: Programmierung WS04/05 Name: Hinweise zur Bearbeitung Nimm Dir für diese Klausur ausreichend Zeit, und sorge dafür, dass Du nicht gestört wirst. Die Klausur ist für 90 Minuten angesetzt,

Mehr

Der Einsatz von CORBA in verteilten EDA-Tools

Der Einsatz von CORBA in verteilten EDA-Tools Der Einsatz von CORBA in verteilten EDA-Tools Frank Grützmacher Technische Universität Ilmenau Fakultät für Elektrotechnik und Informationstechnik Fachgebiet Mikroelektronische Schaltungen und Systeme

Mehr

Computeranwendung und Programmierung (CuP)

Computeranwendung und Programmierung (CuP) Computeranwendung und Programmierung (CuP) VO: Peter Auer (Informationstechnologie) UE: Norbert Seifter (Angewandet Mathematik) Organisatorisches (Vorlesung) Vorlesungszeiten Montag 11:15 12:45 Freitag

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java Vorlesung vom 18.4.07, Grundlagen Übersicht 1 Kommentare 2 Bezeichner für Klassen, Methoden, Variablen 3 White Space Zeichen 4 Wortsymbole 5 Interpunktionszeichen 6 Operatoren 7 import Anweisungen 8 Form

Mehr

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2 Java Einführung VARIABLEN und DATENTYPEN Kapitel 2 Inhalt dieser Einheit Variablen (Sinn und Aufgabe) Bezeichner Datentypen, Deklaration und Operationen Typenumwandlung (implizit/explizit) 2 Variablen

Mehr

Praktikum aus Softwareentwicklung 2. Web Services. Java Praktikum SS 2010 Gerald.Ehmayer@borland.com

Praktikum aus Softwareentwicklung 2. Web Services. Java Praktikum SS 2010 Gerald.Ehmayer@borland.com Web Services Java Praktikum SS 2010 Gerald.Ehmayer@borland.com 1 Web Services Einführung Definition, Eigenschaften, Anwendungen... JAX-RPC Überblick, Architektur... JAX Übersicht, Architektur Java Praktikum

Mehr