Nach Implementierung der Methoden zum Lesen und Schreiben der Attribute sowie der Operationen einer Objektklasse liegt ein fertiges Agentenobjekt vor. Bevor aber ein Client, d.h. eine Managementanwendung über CORBA auf das Objekt zugreifen kann, sind folgende Schritte notwendig:
Für den Prototypen werden diese Schritte vom Server-Programm SystemAgentServer.java für alle Objekte durchgeführt. Die Implementierung wird aber wiederum nur anhand der Klasse UNIXSystemImpl erläutert. Abbildung 6.15 enthält den dazugehörigen Code.
Der Aufruf org.omg.CORBA.ORB.init(args, null);
initialisiert
den ORB und gibt eine Referenz auf das ORB-Objekt an den Aufrufer
zurück. Der BOA des ORB wird
durch Aufruf der Methode BOA_init();
auf dem ORB-Objekt
initialisiert. Als nächstes wird eine Instanz der Klasse
UNIXSystemImpl erzeugt. Durch Angabe des Namens ,,
UNIXSystem`` ensteht ein persistentes CORBA-Objekt, welches beim
Smart Agent registriert wird. Dadurch kann ein Client später
die IOR des Objekts über diesen Namen ermitteln. Das neu erzeugte
Objekt ist jetzt in der Lage, Anfragen eines Clients entgegenzunehmen.
Dies wird dem BOA durch den Aufruf boa.obj_is_ready(sys);
angezeigt. An dieser Stelle werden normalerweise weitere
Agentenobjekte erzeugt, registriert und initialisiert. Durch den
abschließenden Aufruf boa.impl_is_ready();
geht das
Server-Programm, das die Agentenobjekte bereitstellt, in eine
Endlosschleife, um auf Anfragen von Clients zu warten.
Für Agentenobjekte, die nach dem Tie-Ansatz implementiert sind, sieht die Aktivierung etwas anders aus. Nach Instantiierung der Implementierungsklasse für das Objekt wird zusätzlich ein Proxy-Objekt erzeugt und mit dem Implementierungsobjekt verbunden. Dieses Proxy-Objekt wird anschließend beim BOA ganz gewöhnlich registriert. Ein Code-Beispiel hierfür findet sich in Anhang B.
Die geschilderte Methode zum Erzeugen und Aktivieren von Agentenobjekten funktioniert nur für Klassen des Objektmodells, die pro System nur einmal instantiiert werden und statisch sind, d.h. während der Laufzeit des Agenten nicht gelöscht oder erzeugt werden. Für Managementobjekte, die zahlreich in einem System auftreten und dynamisch erzeugt und gelöscht werden können, bedient sich der Prototyp sog. Factories. Beispiele für solche Objekte sind u.a. Prozesse, Benutzerkennungen, Dateisysteme und Software-Pakete.