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:
- Nachträgliches Verpassen einer (CORBA-)Schnittstelle
- Vereinfachung der Vererbungsschnittstelle
- Vereinfachung der Vererbungshierarchie, dies ersetzt oft die mehrfachvererbung.
Anwendung: Klasse soll zwei Schnittstellen implementieren
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