Zurück | Weiter |
Aufgabe
Wie kann ein Client ein CORBA Objekt finden ? Dieses muss sich ja keineswegs auf dem selben
Rechner befinden.
Objekt Referenzen sind weltweit eindeutig. Sie werden durch den im ORB implementierten
BOA erzeugt. Dieser besitzt eine Methode XBOAimpl {...}. Diese wird immer
dann aufgerufen, wenn ein neues Objekt erzeugt wird. Dabei generiert der BOA eine Objekt
Referenz.
Finden, aber wie ?
Im Prinzip ist es im CORBA Standard nicht definiert, auf welche konkrete Weise ein
Objekt lokalisiert wird. Die einfachste Methode ist es den Server seine Objekt - Referenz auf
einen Ausgabeport zu schreiben und diese beim Client wieder einzutragen. Dazu stellt
CORBA die Funktionen object_to_string und string_to_object zur
Verfügung. In diesem Fall ist der Benutzer auch der Namensdienst. Dies kann aber nicht im
Sinne des Erfinders sein, daher gibt es auch einen implementieren Namensdiest, durch den dieser
Prozess automatisiert werden kann.
Naming Service in CORBA
CORBA bietet von sich aus einen Namensdienst an. Dieser Service ist nicht an den ORB gebunden,
sondern stellt einen eigenen Teil des Systems da. Der Vorteil hierbei ist, dass viele Realisierungen eines
derartigen Systems verwendet werden können. Z.B. wird man einen anderen Namensdienst verwenden, wenn man
auf viele Objekte - wie in einer Datenbank - zugreifen möchte, als wenn eine sehr triviale Lösung ausreichen
würde. Es ist hier wieder möglich das CORBA System auf seine eigenen
Bedürfnisse anzupassen.
Wie aber kann der Client den Namensdienst erreichen, wenn er keine Möglichkeit hat auch nur
ein Objekt zu finden ? Dazu bietet CORBA eine Methode an CORBA::Object_ptr resolve_initial_reference(char* id);
Hierdurch wird dem Client eine Anzahl Basis Objekt Referenzen mitgeteilt, wozu auch der Namensdienst
gehört. Dadurch ist es dem Client nun möglich alle, beim Namensdienst
registrierten Objekte zu finden. Dies ist natürlich Voraussetzung , dass
der Server die von ihm bereitgestellten Objekte auch beim Namensdienst anmeldet.
Kommunikation
Hier einmal der Ablauf einer derartigen Anfrage aus Sicht des Client