Hallo,
ich hab eine kleine Info zu Punkt 7.
Die Agenten laufen nicht jeder in seiner eigenen JVM.
Dies kann man ganz schnell testen, indem man ein JAR baut, welches eine Klasse mit der Deklaration
einer statischen Variable hat:
package de.tests.testjvm;
public class IntAdd {
public static int counter; //Zähler für Agententest
}
Dieses JAR in lib\ext von Client und Server. Client wegen der Entwicklung. Server durchstarten, damit das JAR eingelesen wird.
Dann erstellt man einen Java-Agenten mit folgendem Quelltext:
import lotus.domino.*;
import de.tests.testjvm.*;
public class JVMTest extends AgentBase {
public void NotesMain() {
try {
IntAdd ia = new IntAdd(); //Klasse aus der JAR
ia.counter++; //Zähler eins hochzählen
System.out.println("Counter: " + ia.counter); //Zähler in Konsole printen
} catch(Exception e) {
e.printStackTrace();
}
}
}
Den Agenten kopieren und unter anderem Namen speichern.
Die Agenten aktivieren.
Dann sieht man in der Konsole, dass alle Agenten dieselbe Instanz der Variable counter benutzen.
Sie wird nämlich kontinuierlich hochgezählt.
Dies wäre nicht der Fall, wenn jeder seine eigene JVM benutzen würde, da dann jeder Agent seine eigene Instanz von counter hätte.
Es wird ür jeden Agenten nur ein neuer Thread in der JVM aufgemacht.
Ansonsten sehr guter Beitrag.
mfg
Kjeld