next up previous contents
Next: 6.3.2 Klasse AgentManager Up: 6.3.1 Klasse AgentSystem Previous: 6.3.1 Klasse AgentSystem

Methode main(...)

Diese Methode wird beim Start des Agentensystems abgearbeitet und kommt ihr deshalb besondere Bedeutung zu. Es werden nun der Reihe nach die wichtigsten Verarbeitungsschritte beschrieben:
Zu Beginn wird die Property-Datei eingelesen und für alle Klassen, die innerhalb dieses Prozesses instanziiert sind, zur Verfügung gestellt.

Das erste Agentensystem, welches sich an den Naming Service bindet, generiert den gesamten Namensraum, sowohl für die Agentensysteme als auch für die Agenten. Dabei wird der Naming Service folgendermaßen kontaktiert:

 1  org.omg.CORBA.ORB orb= org.omg.CORBA.ORB.init();
 2  org.omg.CORBA.Object namingService= 
 3    orb.resolve_initial_references("NameService");
Zuerst wird der ORB initialisiert, anschließend eine CORBA-Objektreferenz des Naming Service in Form des Root Context (namingService) zurückgeliefert. Die Typkonvertierung von CORBA-Objektreferenzen wird immer mit der narrow()-Methode der entsprechenden Helper-Klasse durchgeführt:
 1 org.omg.CosNaming.NamingContext rootContext = 
 2   org.omg.CosNaming.NamingContextHelper.narrow(namingService);
Die Typkonvertierung ist notwendig, denn namingService ist vom Typ org.omg.CORBA.Object, der Basisschnittstelle aller CORBA-Objekte und kann so erst einmal nicht auf die Methoden, welche die Schnittstelle org.omg.CosNaming.NamingContext bereitstellt, zugreifen.

Die Klasse AgentSystem und die Klasse AgentManager werden instanziiert. Nun bindet sich das Agentensystem selbst mit dem oben vorgestellten Tie-Mechanismus an den ORB:

 1   AgentsystemService agentSystemService= 
 2     new _tie_AgentSystemService(agentSystem);
 3   boa.obj_is_ready(agentSystemService);
wobei agentSystem eine Instanz der Klasse AgentSystem ist.

Das Agentensystem trägt sich in den Naming Service ein, schickt in den Standard Event Channel ein 'AgentSystemUp' und wird schließlich durch den Aufruf

    boa.impl_is_ready();
in eine Endlosschleife gebracht, um die Terminierung des Programms zu verhindern.


next up previous contents
Next: 6.3.2 Klasse AgentManager Up: 6.3.1 Klasse AgentSystem Previous: 6.3.1 Klasse AgentSystem
Copyright Munich Network Management Team