Was sind Aglets Seminar Software Agenten Vortrag von

  • Slides: 72
Download presentation
Was sind Aglets? Seminar „Software Agenten“ Vortrag von Tatjana Tschupin und Sergej Lewin 1

Was sind Aglets? Seminar „Software Agenten“ Vortrag von Tatjana Tschupin und Sergej Lewin 1

Überblick Einführung n Basiskomponenten des Agletsystems n Aglet, Aglets Lebenszyklus und Context n Aglets

Überblick Einführung n Basiskomponenten des Agletsystems n Aglet, Aglets Lebenszyklus und Context n Aglets Messaging n Aglets Framework n 2

Was sind Aglets? Aglets sind Java-Objekte, die sich von Host zu Host bewegen können.

Was sind Aglets? Aglets sind Java-Objekte, die sich von Host zu Host bewegen können. Sie können ihre Ausführung jederzeit anhalten, sich zu einem anderen Host bewegen und dort die Ausführung fortsetzen. 3

Aglet Programming Interface (API) n Eine Bibliothek von Klassen und Interfaces n Wurde vom

Aglet Programming Interface (API) n Eine Bibliothek von Klassen und Interfaces n Wurde vom IBM Tokyo Forschungslaboratorium in Japan entwickelt, um eine einheitliche Plattform für mobile Agentensysteme zu schaffen. 4

Aglet Software Development Kit (ASDK) n www. trl. ibm. com/aglets (Download) n basiert sich

Aglet Software Development Kit (ASDK) n www. trl. ibm. com/aglets (Download) n basiert sich auf Java 1. 1. x. und funktioniert nicht mit Java 1. 2 oder höher. n www. sourceforge. com (eine Version für Java 1. 2) n alle Ausführungen in diesem Vortrag basieren sich auf Java 1. 1. x. 5

Tahiti n ASDK enthält auch einen Agentenplattform Tahiti, die auf Basis von sogenannten Server.

Tahiti n ASDK enthält auch einen Agentenplattform Tahiti, die auf Basis von sogenannten Server. API entwickelt wurde und Tahiti ermöglicht bequemes Management von Agenten 6

Basiskomponenten des Agletsystems Aglet. Ein Aglet ist ein mobiles Java-Objekt, das sich zwischen n

Basiskomponenten des Agletsystems Aglet. Ein Aglet ist ein mobiles Java-Objekt, das sich zwischen n n Hosts bewegen kann. Proxy. Ein Proxy repräsentiert einen Vertreter eines Aglets und dient als Schutzschild. u Schirmt die public-Methoden eines Aglets vor einem direkten Zugriff durch andere Aglets ab u Versteckt den tatsächlichen Aufenthaltsort des Aglets (location transparency) Client Interaktion Proxy Aglet 7

Basiskomponenten des Agletsystem n n Context. Ein Context ist die Arbeitsumgebung eines Aglets und

Basiskomponenten des Agletsystem n n Context. Ein Context ist die Arbeitsumgebung eines Aglets und stellt eine Reihe von Diensten zur Verfügung, z. B: u Ein Aglet wird von einem Context erzeugt u Der Context enthält die Informationen über alle in ihm laufenden Aglets Ein Host kann mehrere Contexts enthalten und jeder Context ist durch die Kombination von Serveradresse und seinem Namen bestimmt. 8 Identifier. Er ist während des ganzen Lebenszyklusen

Das Verhaltensmodell n n n Das Modell von einem Aglet wurde durch die Analyse

Das Verhaltensmodell n n n Das Modell von einem Aglet wurde durch die Analyse von „Leben“ und „Tod“ eines mobilen Aglets entwickelt. Es gibt nur zwei Wege, ein Aglet ins Leben zu rufen: u Man kann ein neues Aglet-Objekt erzeugen (Creation) u Es wird von einem existierenden Aglet geklont (Cloning) Um die Aglets zu kontrollieren, kann man sie zerstören (Disposal). Aglets sind auf zwei verschiedene Weise mobil: u Aktiv u Passiv Die Aglets können vorübergehend „einschlafen“, um bestimmte Ressourcen freizugeben (Deactivation) und können später zum Laufen gebracht werden (Activation). Die Aglets können Informationen austauschen, um eine vorgegebene Aufgabe zu erfüllen (Messaging). 9

Hauptoptionen eines Aglets n n n Creation. Ein Aglet bekommt einen Identifier, wird in

Hauptoptionen eines Aglets n n n Creation. Ein Aglet bekommt einen Identifier, wird in einen Context eingefügt und initialisiert. Cloning. Es wird eine fast gleiche Kopie des originalen Aglets im selbem Context produziert. Es gibt zwei Unterschiede: u seine eigene ID u seine eigene Ausführungthreads Dispatching. Das Aglet wird von seinem aktuellen Context entfernt und in den Ziel. Context eingefügt. 10

Hauptoptionen eines Aglets n n Retraction. Ein Aglet wird vom Remote-Context entfernt und in

Hauptoptionen eines Aglets n n Retraction. Ein Aglet wird vom Remote-Context entfernt und in den aktuellen Context, von dem es angefordert wurde, eingefügt. Deactivation. Die Ausführung des Aglets wird angehalten, und sein Zustand auf die Festplatte gespeichert. Activation. Die Ausführung des Aglets wird mit dem alten Zustand im selben Context wiedergestartet. Disposal. Die Ausführung vom Aglet wird angehalten und das Aglet wird von seinem aktuellen Context entfernt, wobei alle seine Threads geschlossen werden. 11

Hauptoptionen eines Aglets Context A Aglet Context B Dispatche Dispose Aglet Retract Clone Create

Hauptoptionen eines Aglets Context A Aglet Context B Dispatche Dispose Aglet Retract Clone Create Class File Deactivate Activate Disk Storage 12

Aglet Event Model n Der Clone Listener ist für Cloning Event‘s vorgesehen. Man benutzt

Aglet Event Model n Der Clone Listener ist für Cloning Event‘s vorgesehen. Man benutzt den Clone Listener, um zu reagieren: u wenn ein Aglet geklont wird u wenn ein Aglet Clone erzeugt ist u nach dem Cloning. n Der Mobility Listener ist für Mobility Event‘s vorgesehen. Man benutzt diesen Listener, um zu reagieren: u wenn sich ein Aglet von einem Context zu anderem bewegt u wenn es von einem Context angefordert wird u wenn es bei einem neuen Context ankommt. n Der Persistence Listener ist für Persistence Event‘s vorgesehen, um auf Activation bzw. Deactivation eines Aglets zu reagieren. 13

n n Aglets kommunizieren mittels message passing. Messages werden nacheinander verarbeitet. Eine Message ist

n n Aglets kommunizieren mittels message passing. Messages werden nacheinander verarbeitet. Eine Message ist ein Objekt, das zwischen Aglets ausgetauscht wird. u Synchrone Kommunikation u Asynchrone Kommunikation Aglet Communication Model n Aglet Message Reply Proxy Message Reply Aglet 14

Aglet Package n Die wichtigsten Klassen bzw. Interfaces der Aglets API sind : u

Aglet Package n Die wichtigsten Klassen bzw. Interfaces der Aglets API sind : u Aglet. Proxy u Aglet. Context u Message u Future. Reply u Aglet. ID 15

Die Klasse Aglet n n n Die Klasse Aglet ist die zentrale Klasse in

Die Klasse Aglet n n n Die Klasse Aglet ist die zentrale Klasse in der Aglet API. Sie enthält die Methoden, die den Lebenszyklus eines Aglets bestimmen: u Cloning u Dispathing u Deactivating u Disposing Sie enthält aber auch die Methoden, die das Verhalten von einem Aglet festlegen und die von einem Programmierer überschrieben werden sollen. 16

Die Klasse Aglet n Das Objekt Aglet. Info, das von get. Aglet. Info() geliefert

Die Klasse Aglet n Das Objekt Aglet. Info, das von get. Aglet. Info() geliefert wird, enthält die Attribute des Aglets : u Zeit, wann das Aglet erzeugt wurde u code-base u Ankunft-Zeit u die Adresse seines aktuellen Context. 17

Die Klasse Aglet n Erzeugen eines Aglets import com. ibm. aglet public class My.

Die Klasse Aglet n Erzeugen eines Aglets import com. ibm. aglet public class My. First. Aglet extends Aglet { // Die Methoden vom Aglet } 18

Die Klasse Aglet n Initialisierung eines Aglets public void on. Creation (Object init) {

Die Klasse Aglet n Initialisierung eines Aglets public void on. Creation (Object init) { //hier wird das Aglet initialisiert } 19

Die Klasse Aglet n Start der Ausführung public void run() { // Aglet wird

Die Klasse Aglet n Start der Ausführung public void run() { // Aglet wird gestartet } n Um das Aglet zu einem entfernten Context zu schicken, soll die Methode dispatch(new URL („atp: //some. host. com/context“)); aufgerufen werden 20

Dispatching State 1. 2. Byte Code Host Sending Receiving State 3. Byte Code Host

Dispatching State 1. 2. Byte Code Host Sending Receiving State 3. Byte Code Host 21

Aglet. Proxy Interface Durch das Aglet. Proxy laufen alle Zugriffe auf das Aglet n

Aglet. Proxy Interface Durch das Aglet. Proxy laufen alle Zugriffe auf das Aglet n Das Objekt Aglet. Proxy ruft den Sicherheitsmanager auf, um zu entscheiden, ob der aktuelle Context die Aglets Methoden anzusprechen erlaubt. n Das Aglet. Proxy ermöglicht auch die sogenannte Orttransparenz (location transparency) n 22

Aglet. Proxy Interface n Methoden, die das Proxy des neu erzeugten Aglets zurückgeben: u

Aglet. Proxy Interface n Methoden, die das Proxy des neu erzeugten Aglets zurückgeben: u u u public abstract Aglet. Proxy Aglet. Context. create. Aglet (URL code. Base, String code, Object init) public abstract Aglet. Proxy Aglet. Context. retract. Aglet (URL location, Aglet. ID id) public abstract Aglet. Proxy. dispatch (URL destination) 23

Aglet. Proxy Interface n Proxies des existierendes Aglets bekommt man auch auf die folgenden

Aglet. Proxy Interface n Proxies des existierendes Aglets bekommt man auch auf die folgenden Weise : u public abstract Aglet. Proxy Aglet. get. Proxy() u public abstract Aglet. Proxy Aglet. Context. get. Aglet. Proxy(Aglet. ID id) u public abstract Enumeration Aglet. Context. get. Aglet. Proxy() 24

Aglet. Context Interface n n n Der Context ist eine Ausführungsumgebung für Aglets. Dieses

Aglet. Context Interface n n n Der Context ist eine Ausführungsumgebung für Aglets. Dieses Interface bietet die Möglichkeit die laufenden Aglets in einer Umgebung zu verwalten. Die Aglet Klasse hat eine Methode zum Zugriff auf seinen aktuellen Context context = get. Aglet. Context(); 25

Aglet. Context Interface n Das Aglet kann durch Zugreifen auf den Context ein neues

Aglet. Context Interface n Das Aglet kann durch Zugreifen auf den Context ein neues Aglet erzeugen: context. create. Aglet(URL code. Base, String code, Object init) n Außerdem gibt es eine Methode, die ein Aglet vom Remote-Context in den aktuellen Context zurückholt: context. retract. Aglet(remote. Context. URL, aglet. ID); 26

Aglet, Aglets Lebenszyklus und Context n Wichtige Ereignisse im Leben eines Aglets Creation: Erzeugung

Aglet, Aglets Lebenszyklus und Context n Wichtige Ereignisse im Leben eines Aglets Creation: Erzeugung und Klonen eines Aglets u Disposal: Tod eines Aglets u Mobility: dispatch und retract u Persistence: De- und Aktivierung eines Aglets u 27

Realisierung des Event Modells n Events Klassen: u n Listener-Interfaces: u n Clone. Event,

Realisierung des Event Modells n Events Klassen: u n Listener-Interfaces: u n Clone. Event, Mobility. Event, Persistency. Event Clone. Listener, Mobility. Listener, Persistency. Listener Adapter-Klassen u Clone. Adapter, Mobility. Adapter, Persistency. Adapter 28

Events n Einige Methoden von Clone. Event: u n Einige Methoden von Mobility. Event

Events n Einige Methoden von Clone. Event: u n Einige Methoden von Mobility. Event u u n public Aglet. Proxy get. Aglet. Proxy(); gibt Aglet. Proxy des geklonten Aglets zurück public Aglet. Proxy get. Aglet. Proxy(); gibt Aglet. Proxy des gesendeten Aglets zurück public URL get. Location(); gibt den Bestimmungsort für das Aglet zurück Einige Methoden von Persistency. Event u public Aglet. Proxy get. Aglet. Proxy(); gibt das Aglet. Proxy des de/aktivierten Aglets zurück 29

Creation n Zwei Erzeugungsarten des Aglets u Direkt: Instanz einer Aglet Klasse u Indirekt:

Creation n Zwei Erzeugungsarten des Aglets u Direkt: Instanz einer Aglet Klasse u Indirekt: Klonen eines Aglets 30

Creation(direkt) n das Erzeugen einer Aglet-Instanz durch u u n public Aglet. Proxy Aglet.

Creation(direkt) n das Erzeugen einer Aglet-Instanz durch u u n public Aglet. Proxy Aglet. Context. create. Aglet(URL code. Base, String code, Object init); (nicht durch Konstruktor protected Aglet(); ) die Manipulation des Aglet Verhaltens public void Aglet. on. Creation(Object init); u public void Aglet. run(); (diese Methoden sollen überschrieben werden) u 31

Creation(direkt) n Zusammenarbeit der Methoden create. Agle t() Aglet () on. Creation () run()

Creation(direkt) n Zusammenarbeit der Methoden create. Agle t() Aglet () on. Creation () run() 32

Creation(indirekt) n Klonen eines Aglets mittels u n public final Object Aglet. clone(); Steuerung

Creation(indirekt) n Klonen eines Aglets mittels u n public final Object Aglet. clone(); Steuerung des Klonens mittels Clone. Listener public Clone. Adapter(); u public final Aglet. Add. Clone. Listener(Clone. Listener c); (public final Aglet. remove. Clone. Listener(Clone. Listener c); ) u 33

Creation(indirekt) n drei Methoden von Clone. Listener für die Steuerung des Klonens u u

Creation(indirekt) n drei Methoden von Clone. Listener für die Steuerung des Klonens u u u n public void on. Cloning(Clone Event); public void on. Cloned(Clone Event); Mit diesen Methoden kann auch das Verhalten des Aglets und des Clones festgelegt werden. 34

Creation(indirekt) n Die Zusammenarbeit der Methoden run() on. Cloning( ) Original on. Cloned() on.

Creation(indirekt) n Die Zusammenarbeit der Methoden run() on. Cloning( ) Original on. Cloned() on. Clone() Clone run() 35

Creation(indirekt) public class Cloning. Example extends Aglet{ boolean _the. Clone = false; public void

Creation(indirekt) public class Cloning. Example extends Aglet{ boolean _the. Clone = false; public void on. Creation(Object o){ add. Clone. Listener(new Clone. Adapter(){ public void on. Cloning(Clone. Event e){ //Ausgabe } public void on. Cloning(Clone. Event e){ _the. Clone=true; //Ausgabe } public void on. Cloning(Clone. Event e){ //Ausgabe }); } 36

Creation(indirekt) public void run() { if(!_the. Clone){ //The parent runs here clone(); }else {

Creation(indirekt) public void run() { if(!_the. Clone){ //The parent runs here clone(); }else { //The clons runs here } } } 37

Disposal n Das Entfernen eines Aglets aus dem Context mittels u n public final

Disposal n Das Entfernen eines Aglets aus dem Context mittels u n public final Aglet. dispose(); Das Entfernen eines Aglets kann durch u public void Aglet. on. Disposing(); beeinflusst werden. 38

Disposal n Aufrufreihenfolge und Zusammenarbeit von Methoden dispose() on. Disposin g() run() 39

Disposal n Aufrufreihenfolge und Zusammenarbeit von Methoden dispose() on. Disposin g() run() 39

Mobility n zwei Mobilitätsarten eines Aglets aktiv: Dispatching u passiv: Retraction u 40

Mobility n zwei Mobilitätsarten eines Aglets aktiv: Dispatching u passiv: Retraction u 40

Mobility(aktiv) n Ein Aglet kann sich selbst mittels u public final void Aglet. dispatch(

Mobility(aktiv) n Ein Aglet kann sich selbst mittels u public final void Aglet. dispatch( URL destination); zum anderen Context destination bewegen. n Dispatching- Prozess kann durch Mobility. Listener beeinflusst werden. public Mobility. Adapter(); u public final Aglet. Add. Mobility. Listener(Clone. Listener l); (public final Aglet. remove. Mobility. Listener(Clone. Listener l); ) u 41

Mobility(aktiv) n zwei Methoden für Steuerung des Dispatchings public void Mobility. Adapter. on. Dispatching();

Mobility(aktiv) n zwei Methoden für Steuerung des Dispatchings public void Mobility. Adapter. on. Dispatching(); (bereitet das Aglet zur „Reise“ vor) u public void Mobility. Adapter. on. Arrival(); (initialisiert das Aglet im Remote-Context) u 42

Mobility(aktiv) n Die Zusammenarbeit der Methoden run() Aktuelles Context dispatch() on. Dispatching () on.

Mobility(aktiv) n Die Zusammenarbeit der Methoden run() Aktuelles Context dispatch() on. Dispatching () on. Arrival() run() Remote-Context 43

Mobility(passiv) n Ein Aglet kann aber auch von einem Remote. Context zurückgeholt werden mittels

Mobility(passiv) n Ein Aglet kann aber auch von einem Remote. Context zurückgeholt werden mittels u n public Aglet. Proxy Aglet. Context. retract. Aglet(URL context. Address, Aglet. ID identity); Beispiel: u Aglet. ID aid=proxy. get. Aglet. ID() proxy. dispatch(destination); get. Aglet. Context(). retract. Aglet(destination, aid); 44

Mobility(passiv) n Retraction kann durch Mobility. Listener gesteuert werden mittels on. Arrival() und u

Mobility(passiv) n Retraction kann durch Mobility. Listener gesteuert werden mittels on. Arrival() und u n public void Mobility. Adapter. on. Reverting( Mobility. Event); Retraction unterstützt auch disconnected operation 45

Mobility(passiv) n Die Zusammenarbeit der Methoden lokal retract. Aglet() on. Arrival() run() remote on.

Mobility(passiv) n Die Zusammenarbeit der Methoden lokal retract. Aglet() on. Arrival() run() remote on. Reverting() 46

Mobility(passiv) n n n Jedes Aglet lässt beim Verlassen des aktuellen Contextes seinen elektronischen

Mobility(passiv) n n n Jedes Aglet lässt beim Verlassen des aktuellen Contextes seinen elektronischen Fingerabdruck im aktuellen Context Dieser Fingerabdruck wird in der Property. List (Liste von Attributpaaren) gespeichert Die Property. List kann mittels u u u public abstract Object get. Property(String key); public abstract Object get. Property(String key, Object value); public abstract Object set. Property(String key, Object value); verwaltet werden 47

Persistence n Ein Aglet kann deaktiviert werden mittels u n public final Aglet. deactivate(long

Persistence n Ein Aglet kann deaktiviert werden mittels u n public final Aglet. deactivate(long duration); De- bzw. Aktivierung kann durch den Persistency. Listener beeinflusst werden public Persistency. Adapter(); u public final void Aglet. add. Persistency. Listener( Persistency. Listener p); u public final void Aglet. remove. Persistency. Listener( Persistency. Listener p); u 48

Persistence n zwei Methoden von Persistency. Listener zur Steuerung von De- bzw. Aktivierung des

Persistence n zwei Methoden von Persistency. Listener zur Steuerung von De- bzw. Aktivierung des Aglets public void Persistency. Adapter. on. Deactivating( Persistency. Event event); u public void Persistency. Adapter. on. Activation( Persistency. Event event); u 49

Persistence n Die Zusammenarbeit der Methoden run() vorher deactivate() on. Deactivating() on. Activatio n()

Persistence n Die Zusammenarbeit der Methoden run() vorher deactivate() on. Deactivating() on. Activatio n() nachhe r run() 50

Aglets Messaging n n n Klasse Message Simple Messaging Future Reply Message Manager Multicasting

Aglets Messaging n n n Klasse Message Simple Messaging Future Reply Message Manager Multicasting 51

Klasse Message n n Aglets kommunizieren, indem sie Objekte der Klasse Message austauschen eine

Klasse Message n n Aglets kommunizieren, indem sie Objekte der Klasse Message austauschen eine Message hat zwei Attribute kind und argument public Message(String kind); u public Message(String kind, ** arg); („**“ steht für int, float, Object usw. ) u n argument kann auch eine Hashtabelle sein 52

Klasse Message n auf kind bzw. argument kann zugegriffen werden mittels u u n

Klasse Message n auf kind bzw. argument kann zugegriffen werden mittels u u n public String Message. get. Kind(); public Object Message. get. Arg(); Messages kann man mittels public boolean Message. same. Kind( String); u unterscheiden. 53

Klasse Message n Eine Hashtabelle als argument kann mittels u u public void Message.

Klasse Message n Eine Hashtabelle als argument kann mittels u u public void Message. set. Arg(String key, Object value); public Object Message. ger. Arg(String key); verwaltet werden n Ein Message kann durch public void Message. send. Reply(); u public void Message. send. Reply(** reply); („**“ steht für int, float usw. ) u beantwortet werden n ein Message kann aber auch mit einer Exception u public void Message. send. Exception(Exception e); beantwortet werden 54

Simple Message n Jedes Aglet soll einen Message-Handler haben. n Für Message-Handling ist die

Simple Message n Jedes Aglet soll einen Message-Handler haben. n Für Message-Handling ist die Methode public boolean Aglet. handle. Message( Message m); u vorgesehen. n Der Message-Handler ist durch if-then Anweisungen implementiert. 55

Simple Message n Eine Message wird mittels Proxy‘s Methode gesendet. u n n public

Simple Message n Eine Message wird mittels Proxy‘s Methode gesendet. u n n public Object Aglet. Proxy. send. Message(Message m); Das Proxy dient als Message-Gateway fürs Aglet Simple Messaging ist sogenanntes synchrones Messaging. 56

Future Reply n n n Asynchrones Messaging durch Future Reply Beim asynchronen Messaging wird

Future Reply n n n Asynchrones Messaging durch Future Reply Beim asynchronen Messaging wird die Ausführung des Hauptthreads vom Aglet nicht blockiert. Future Reply als eine Art Mailbox 57

Future Reply n beim asynchronem Messaging wird eine Message mittels der Methode u public

Future Reply n beim asynchronem Messaging wird eine Message mittels der Methode u public Future. Reply Proxy. send. Future. Message(Message m); abgeschickt. n „mailbox“ kann abgefragt werden durch u n public boolean Future. Reply. is. Available(); oder man wartet für eine bestimmte Zeit auf ein Reply u public void Future. Reply. wait. For. Reply(long duration); n schließlich kann das Reply aus der Mailbox herausgeholt werden u public Object Future. Reply. get. Reply(); 58

Future Reply Asynchrones Messaging Agle t 1: send. Message () 2: get. Reply() Obj.

Future Reply Asynchrones Messaging Agle t 1: send. Message () 2: get. Reply() Obj. Agle t Prox y Futur e Messa ge Handle r Reply 59

Future Reply public class Future. Example extends Aglet{ public void run(){ Aglet. Proxy proxy

Future Reply public class Future. Example extends Aglet{ public void run(){ Aglet. Proxy proxy = get Aglet. Context(). create. Aglet(get. Code. Base(), “Future. Child“, null); Future. Reply future=proxy. send. Future. Message(new Message(“Hello„)); future. wait. For. Reply(4000); if(future. is. Available()){ String reply = (String) future. get. Reply(); //Verarbeitung von Reply }else //weiter ohne Reply machen } } 60

Message Manager Aglet M M Message Manager Messa ge Handle r 61

Message Manager Aglet M M Message Manager Messa ge Handle r 61

Multicasting Message n n Bis jetzt wurde das sogenannte peer-to-peer Messaging behandelt. Beim peer-to-peer

Multicasting Message n n Bis jetzt wurde das sogenannte peer-to-peer Messaging behandelt. Beim peer-to-peer Messaging muß der Absender das Proxy oder die Identität des Empfängers kennen. Solch eine starke Bedienung tritt nur begrenzt auf. Die Alternative ist Message Multicasting! 62

Multicasting Message a Hello a b Hello b d Hell o c Subscribe c

Multicasting Message a Hello a b Hello b d Hell o c Subscribe c Advertise 63

Multicasting Message n Jedes Aglet kann eine oder mehrere Multicasting Messages abonnieren u n

Multicasting Message n Jedes Aglet kann eine oder mehrere Multicasting Messages abonnieren u n und sein Abonnement wieder ungültig machen. u u n public final void Aglet. subscribe. Message(String kind); public final void Aglet. unsubscribe. Message(String kind); public final void Aglet. unsubscribe. All. Message(String kind); Wenn ein Aglet den Context verlässt, wird sein Abonnement automatisch gelöscht. 64

Multicasting Message n n das Abonnement wird im Context gespeichert. Eine Message wird an

Multicasting Message n n das Abonnement wird im Context gespeichert. Eine Message wird an die Abonnenten durch public Reply. Set Aglet. Context. multicast. Message( Message msg); u verschickt. n Als Rückgabewert bekommt man ein Reply. Set, das mit einem Iterator durchlaufen werden kann. n Reply. Set enthält alle Replys der Abonnenten. 65

Multicasting Message public class Multicastsub. Scriber extends Aglet{ public void on. Creation(Object o){ subscribe.

Multicasting Message public class Multicastsub. Scriber extends Aglet{ public void on. Creation(Object o){ subscribe. Message(“Hello“); } public boolean handle. Message(Message msg){ if(msg. same. Kind(“Hello“){ //. . . return true; } else return false; } } 66

Aglets Framework n Aglets Framework besteht aus drei Schichten: Services und die von Benutzer

Aglets Framework n Aglets Framework besteht aus drei Schichten: Services und die von Benutzer definierte Aglets u Aglet API u Communication API u 67

Aglets Framework User-Defined Aglets Aglet API Aglets Runtime Layer -Core Framework. . . -Management

Aglets Framework User-Defined Aglets Aglet API Aglets Runtime Layer -Core Framework. . . -Management Components Cach. Manager. . Security. Manager. . . Persistency. Manager Communication API Communication Layer 68

Aglets Framework n n Core. Framework: eigentliche Implementierung der Aglet API zuständig für: u

Aglets Framework n n Core. Framework: eigentliche Implementierung der Aglet API zuständig für: u u Ausführung des Aglets De-/Serialisierung des Aglets Laden und Transfer von Klassen Aglet References 69

Aglets Framework n Management Komponente u u u Persistence. Manager: Speichern von deaktivierten Aglets

Aglets Framework n Management Komponente u u u Persistence. Manager: Speichern von deaktivierten Aglets Cache. Manager: Verwalten von Daten Security. Manager: Schutz von Hosts und Aglets gegen böswillige Eingriffe 70

Aglets Framework Communication Layer ist verantwortlich für Transport der Aglets über das Netzwerk n

Aglets Framework Communication Layer ist verantwortlich für Transport der Aglets über das Netzwerk n Agent Transfer Protokoll (ATP) n ATP basiert sich auf HTTP-Protokoll n 71

Zusammenfassung n n n Aglets werden zur Zeit nirgends im industriellen Maßstab eingesetzt. Man

Zusammenfassung n n n Aglets werden zur Zeit nirgends im industriellen Maßstab eingesetzt. Man kann sie als ziemlich fortgeschrittener Forschungsprototyp ansehen, bei dessen Implementierung wichtige Erkenntnisse über die Realisierbarkeit und Probleme von mobilen Agenten gewonnen wurden. Ob sie im industriellen Maßstab eingesetzt werden und weiter entwickelt werden, hängt davon ab, ob man geeignete Anwendungsfelder findet. 72