Left Up Right CORBA

Erkenntnisse

Begrifflichkeiten

tie-Implementierung, auch Delegation genannt
template statt Vererbung: Anstatt eine Klasse von einer abstrakten Schnittstelle erbt, wird eine Instanz in einem entsprechendem Template instanziiert. (Es ist das Adapter-Entwurfsmuster)
Vorteil: Bei POA-Ties werden diese von der Template-Klasse POA_Tie_Base abgeleitet. Im Konstruktor der Tie-Klasse kann der POA (nil() voreingestellt) und der Besitzstatus der eingeschlossenen Objektes angegeben werden (Voreinstellung: Falls mit Zeiger initialisiert ja sonst nein). Wenn das tie-Objekt das eingeschlossene besitzt, dann wird dieses bei bedarf mit delete freigegeben.

iiopname und iioploc-URLs

iiopname://rechner.domain:port/pfad ist eine URL für ein Objekt über den CORBA-Namensdienst.
Beim MICO nsadmin wird diese mit dem Befehl url angezeigt.
Die Orb-Methode CORBA::Object_ptr iiopname_to_object (const char *); wandelt die url in eine Objektreferenz um.
iioploc://rechner.domain:port/poaname/objektid ist eine URL für ein Objekt, die direkt an die Implementierung geht.
Diese kann man mit iordump oder bei meinem nsadminpatch mit locurl ermitteln
Der Name des Root-POA kann mit der Option -POAImplName poaname angegeben werden. Nur so sind persistene Objektreferenzen möglich.

Die Orb-Methode CORBA::Object_ptr iioploc_to_object (const char *); wandelt eine solche url in eine Objektreferenz um.

Die Umwandlungsmethoden sind alle in CORBA::Object_ptr CORBA::ORB::string_to_object(const char *str) dem Nutzer verfügbar.

Bemerkung 2004: Es haben sich die corbalocs durchgesetzt:

DynAny und Typecode

Kann man einfach beliebige DynAny-Werte zusammensetzen und ein DynStruct aufbauen ?
Nein, die ORBS müssen wissen, wie die Struktur aussieht (mit ORB::create_dyn_struct anlegen), dann kann die Struktur gefüllt werden.

Meist ist es also besser, man definiert die Strukturen per IDL.


Arbeitsgruppe Komponenten/CORBA Informatik- und Netzwerkverein Ravensburg e.V Rudolf Weber