next up previous contents
Next: String execute_agent(String agent_name, String Up: VoyagerAgentManager Previous: VoyagerAgentManager

  
Name create_agent(Name agent_name, AgentProfile agent_profile, byte[] agent, String place_name, byte[] arguments, ClassName[] class_names, String code_base, MAFAgentSystem class_provider)

Die Methode create_agent() wird vom MASA System zur Erstellung eines Voyager Agenten aufgerufen. Von den übergebenen Parametern sind zur Erstellung eines Voyager Agenten folgende von Interesse: agent_name, agent, place_name, class_names. Der Name des Voyager Agenten soll die in agent_name übergebene Bezeichnung erhalten. Unter Beachtung der Randbedingung, daß für alle Voyager Agenten nur ein Namensraum existiert, wird zur Vermeidung der Namensgleichheit der gewünschte Name des Voyager Agenten folgendermaßen modifiziert: Ist ein Agent des gleichen Namens schon vorhanden wird dem Agentennamen das Postfix <n> hinzugefügt, wobei n standardmäßig mit 1 belegt ist und für jeden weiteren namensgleichen Agenten um 1 inkrementiert wird. Der Voyager Server, auf dem der Agent erstellt werden soll, wird in place_name angegeben. Die Java-Klasse, die die Implementation des Agenten realisiert, wird in class_names angegeben. Hat class_names die Länge 0, so wird die in agent_name angegebene Bezeichnung verwandt. Im ersten Schritt zur Erstellung eines Agenten wird der Packagename aus dem Parameter agent ausgelesen. Danach der zuvor beschriebene Mechanismus zur Ermittlung des Klassennamens durchgeführt und anschließend der Name des Agenten auf die ebenfalls zuvor beschriebene Art und Weise berechnet. Nun kann in MASA ein VoyagerProxyAgent zur Repräsentation des Voyager Agenten erstellt werden. Schlägt dies fehl, wird die create_agent()-Methode ohne Erstellung eines Voyager Agenten abgebrochen. Im fehlerfreien Fall wird mit der Erstellung des Voyager Agenten fortgesetzt. Dazu wird zunächst ein Voyager Client gestartet. Da parallel dazu in derselben Java-Virtual-Machine (JVM) im Thread des NamingGateways ein Voyager Client gestartet sein kann, kann der Versuch, durch den VoyagerAgentManager hier einen Voyager Client zu starten, mit dem Wurf einer StartupException fehlschlagen. Dies stellt jedoch keinen Fehler dar und wird nur durch die Ausgabe einer Warnmeldung angezeigt. Nach dem Start des Voyager Clients wird der Voyager Agent erzeugt und dann zum Voyager Namespace mit seinem Namen und dem Voyager Server samt Portnummer als Präfix gebunden. Die Eintragung in den Voyager Namespace kann zwar auch zusammen mit der Erstellung des Agenten mit einer Methode durchgeführt werden, doch durch die Aufteilung ist eine differenziertere Fehlererkennung möglich. Nach erfolgreicher Erstellung wird der Voyager Client wieder angehalten. Im Fehlerfall muß zunächst ein Rollback bezüglich der Erstellung des VoyagerProxyAgents erfolgen. Die jedoch einfache und konsistente Terminierung eines MASA Agenten rechtfertigt auch die Reihenfolge, in der zunächst der VoyagerProxyAgent und dann erst der Voyager Agent selbst erstellt werden. Als Rückgabewert wird der zur Vermeidung von Namensgleichkeit modifizierte Agentenname zruückgeliefert.


next up previous contents
Next: String execute_agent(String agent_name, String Up: VoyagerAgentManager Previous: VoyagerAgentManager
Copyright Munich Network Management Team