next up previous contents index
Next: Instrumentierung von Systemklassen der Up: Implementierung der Architektur für Previous: Implementierung der Architektur für

Implementierung des Meßobjekts

 Es wurde ein Meßobjekt erstellt, das die in Abschnitt [*] spezifizierte Meßschnittstelle implementiert. Die Java-Implementierung der Meßschnittstelle ist in Abbildung [*] dargestellt.


 
Abbildung: Java-Implementierung der Meßschnittstelle 
43#43

Um den Zugriff von beliebigen Stellen innerhalb der zu überwachenden Anwendung sowie aus der JVM heraus zu ermöglichen, wurde eine Klasse Messung definiert, die die Meßschnittstelle mittels statischer Methoden zur Verfügung stellt. Somit ist innerhalb der Anwendung keine explizite Referenz auf das Meßobjekt erforderlich. Die Klasse Messung instantiiert lediglich das eigentliche Meßobjekt und leitet die Aufrufe der Meßschnittstelle an das Meßobjekt weiter; darüber hinaus implementiert sie keine eigene Funktionalität.

Innerhalb des Meßobjektes wird mit Hilfe einer Hash-Tabelle eine Abbildung von Threads zu Instanzen von BTAs hergestellt. Bei jedem Aufruf einer Methode der Meßschnittstelle wird anhand des ausführenden Threads aus der eben beschriebenen Hash-Tabelle die Zuordnung zu einer Instanz einer BTA hergestellt. Die aktuelle Systemzeit wird bestimmt und gemeinsam mit weiteren Informationen in einem Vektor gespeichert. Um dies zu verdeutlichen, stellt Abbildung [*] die Implementierung der Methoden startBTA und startTA nochmals vereinfacht dar. In der Methode startBTA wird zunächst mit Hilfe der aktuellen Systemzeit sowie eines Zufallswertes, ein eindeutiger Identifikator für die Instanz der gestarteten BTA erzeugt. Dieser Identifikator wird dann gemeinsam mit dem Identifikator des aktuellen Thread (mit Hilfe der put-Methode) in die Hash-Tabelle btaTab eingefügt. In der Methode startTA (sowie in jeder anderen Methode des Meßobjekts) kann dann der Name des aktuellen Thread (mit Hilfe der get-Methode) aus ebendieser Hash-Tabelle wieder ermittelt werden. Die Informationen über die gestartete Subtransaktion (aktuelle Zeit, Bausteinname, Name der Subtransaktion, etc.) werden dann gemeinsam mit dem Identifikator der BTA in einer Datenstruktur messPunkt gesammelt und in dem Vektor messTabelle gespeichert.

 
Abbildung: Java-Implementierung des Meßobjekts (Ausschnitt) 
44#44

In regelmäßigen Abständen wird ein Thread niedriger Priorität gestartet, der die im Vektor gesammelten Daten über eine Socket-Schnittstelle an den Managementagenten außerhalb des Prozesses der überwachten Anwendung übergibt. Durch die Verwendung einer Socket-Schnittstelle wurde sowohl die Möglichkeit geschaffen, die Information über Systemgrenzen hinweg zu übermitteln, als auch Unabhängigkeit von der gewählten Programmiersprache erreicht.


next up previous contents index
Next: Instrumentierung von Systemklassen der Up: Implementierung der Architektur für Previous: Implementierung der Architektur für
Copyright Munich Network Management Team