CORBA
ValueTypes
Value-Types -Objekte werden Call by value übertragen (siehe Kapitel 5)
- Werttyp ist Zwischending zwischen struct und
interface
- Werttyp wird kopiert und Kopie hat eine eigene
Identität (!) (Ist ja auch bei lokalen Aufrufen so, daß die Kopie eines
Objektes eine anderer Adresse als das Original hat)
- Es wird der Zustand des Objektes übetragen. Danach gibt es
zwischen Kopie und Original keine explizite Beziehung mehr
- Werttypen werden lokal verarbeitet.
Einsatz:
- Textverarbeitung, Officepakete
- ...
Kurzschreibweise: Valuebox : Nur ein Datenelement
C++-Mapping
Generiert werden für Valuetype einvalue folgende Klassen:
- einvalue
- Dieser ist nur das Interface und ist abgeleitet von CORBA::ValueBase.
Für die Attribute werden Lese- und Schreib-Zugriffsmethoden abstract
definiert (virtual member()=0)
- OBV_einvalue
- Dieser entält die Attributwerte und stellt die Default-Implementierung dar. (Es fehlen noch die Operationen, die natürlich wegen des declarativen Charakters von IDL nicht spezifiziert werden können.)
OBV steht für ???
- einvalue_init
- Factory-Interface für die Werte.
Zu implementieren:
- einvalue_impl
- Hier werden die Operationen implementiert.
- einvalueFactory
- erzeugt die einvalue_impl
Mit ORB::register_value_factory() muß die einvalueFactory
beim ORB registriert werden.
Java-Mapping
Generiert werden für Valuetype einvalue folgende Klassen:
- einvalue
- Dies ist eine abstracte Klasse und implementiert
org.omg.CORBA.portable.StreamableValue.
- einvalueHolder und einvalueHelper
- wie bei anderen Idl-Typen auch
- einvalueDefaultFactory
- Diese wird automatisch generiert und produziert einvalueImpl
Zu implementieren:
- einvalueImpl
- Diese muß im selben package wie die generierten sein
Bemerkungen:
- Die einvalueDefaultFactory-Klasse wird gewöhnlich nicht
übersetzt; da sie im Server nicht direkt aufgerufen wird.
- Fehlt die Klasse, dann bekommt der Client eine Exception.
Beispiel
Beispiel für TAO-1.2.7 und JDK-1.5.0b , was von RACE inspriert ist, und vielleicht einen CORBA-Aufsatz werden könnte.
Die Server- und Clients sind interoperabel (wie man sich es auch vorstellt).
Logger-Beispiel
Arbeitsgruppe Komponenten/CORBA Informatik- und Netzwerkverein Ravensburg e.V Rudolf Weber