Unter Multithread-Javabean wird hier eine Javabean verstanden, in der mehr
als ein Thread aktiv ist. In Abbildung ist ein Ablauf
dargestellt, bei dem der explizit von der Bean erzeugte Subthread vor
Verlassen der MultiBean beendet wird. Allgemein werden die Subthreads
aber nicht automatisch beendet, wenn der Hauptkontrollfluss die Bean verlässt.
Damit das Messobjekt vom Start eines Subthreads verständigt wird, ist es
notwendig, dessen Methode
add_control_flowaufzurufen; entsprechend bei Stop oder Ende des Threads:
rem_control_flowDas soll aber in einer erweiterten Javabibliothek geschehen. Dazu wird der Subthread als Instanz einer erweiterten Threadklasse BThread erzeugt.
In der Extension BThread der Klasse Thread werden die erforderlichen
Messpunkte in den Methoden start() bzw. stop() gesetzt. Die
Methode stop ist
in Java 1.2 deprecated, funktioniert aber noch.
Für den in dieser Arbeit konstruierten Prototypen wird eine neue Klasse
BThread erzeugt, die instrumentiert werden kann. Im Prototyp ist dieses
Verfahren tolerierbar, in der Praxis ist eine Anpassung
der Threadklasse anzustreben (in FolgeFopra vorgesehen).
Aktive Javabeans sind neben den Oberflächenbausteinen (Eingabe- und
PresentationBeans)
die einzigen Javabeans, bei denen ein Eingriff in den Code nötig ist.
Unter aktiven Javabeans versteht man solche, die Aufträge annehmen, in
einer Warteschlange speichern und unabhängig vom Hauptkontrollfluss des
Events später ausführen (siehe Abbildung ). Damit hier gemessen
werden kann, muss die BTA-Instanz
der auftraggebenden Anwendung gespeichert und bei der Auftragsausführung
ans Messobjekt weitergereicht werden.
Bei der Auftragsausführung ist der Beginn und das Ende der Bearbeitung
sowie die zugehörige BTA-Instanz zu melden.
Javabeans, die das Ergebnis der BTA präsentieren, rufen die Methode:
- BTA_end der MessBean auf.
Mit Hilfe dieses Messpunkts kann der Agent die Antwortzeit ermitteln.