Next: 5.3.4 Klasse MobileAgent
Up: 5.3 Basisagenten-Modell
Previous: 5.3.2 IDL-Schnittstelle Migration
Die abstrakte Klasse Agent ist die zentrale Klasse dieses Teilmodells, da
sie zum einen die Schnittstelle AgentService
implementiert und zum anderen die Grundfunktionalität eines Agenten
bereitstellt (siehe Abbildung 5.5). Sie ist somit auch die
Basisklasse aller Agenten.
Die Klasse Agent implementiert zusätzlich noch die
Java-Schnittstellen java.lang.Runnable, damit ein Agent als Thread
gestartet werden
kann, und java.io.Serializable, damit der Agent serialisierbar
ist
.
Mit der Methode init(...)
erfolgt die Initialisierung der Attribute der Klasse.
Es wird kein Konstruktor verwendet, da sonst die Parameterliste auch in allen
Konstruktoren der Subklassen vorkommen und diese Parameter im
Konstruktor korrekt an die Oberklasse übergeben werden müßten.
Um die Einbindung neuer Agenten so einfach wie möglich zu halten, wurde dieser
Weg, über die init(...)-Methode gewählt.
Der Nachteil der Initialisierung über die init(...)-Methode ist,
daß während der Initialisierung eines konkreten Agenten durch einen
Konstruktor, nicht auf die Attribute der Basisklasse Agent
zurückgegriffen werden kann.
Alle Attribute der Klasse sind als 'protected' deklariert, damit nur die
Subklassen auf diese direkt zugreifen können.
Die Attribute der Klasse sind:
- _url: Webseite des Agenten
- _codeBase: das Basisverzeichnis als URL, von dem die Klassen
für diesen Agenten geladen werden
- _orb: Referenz des ORB
- _boa: Referenz des BOA
- _proxyPushConsumer: Bindung an den Event Channel. Der Agent kann
Events, die er erzeugt, in diesen Event Channel schicken.
- _isExclusive: zeigt an ob es sich bei dem Agenten um einen Exklusiven
Agenten handelt.
- _agentProfile, _className,_ authInfo, _agentStatus, _name werden in
[GMD97] beschrieben.
Zu den einzelnen Attributen werden get-Methoden implementiert, damit der
AgentManager darauf zugreifen kann.
Die Methoden readObject() und writeObject() sind für die
Serialisierung bzw. Deserialisierung des Agenten verantwortlich. Die
Signaturen dieser Methoden sind fest vorgeschrieben (siehe [Fla97] S.434).
Die Methode initTransient(...) wird vom AgentManager aufgerufen,
um die Attribute, die mit 'transient' gekennzeichnet sind, zu
initialisieren. Als 'transient' gekennzeichnete Attribute werden nicht
serialisiert.
Abbildung 5.5:
Teilmodell: Basisagent
 |
Folgende Methoden sind als 'abstract' deklariert und müssen somit
von allen Agenten implementiert werden:
- cleanUp(): Es sollen in dieser Methode, die vom
Agenten belegten Ressourcen freigegeben werden. Diese Methode wird vom
AgentManager aufgerufen, wenn der Agent terminiert wird.
- checkSerialization(): Diese Methode wird vom
AgentManager aufgerufen, wenn der Agent serialisiert werden soll.
Der Agent kann sich mit Hilfe dieser Methode in einen Zustand
bringen, in dem eine Serialisierung sinnvoll ist. Will der Agent die
Serialisierung ablehnen, so kann er die Ausnahmebehandlung
CouldNotMigrate einleiten.
Next: 5.3.4 Klasse MobileAgent
Up: 5.3 Basisagenten-Modell
Previous: 5.3.2 IDL-Schnittstelle Migration
Copyright Munich Network Management Team