Java Reference
In-Depth Information
Nach der Installation und dem Starten der zweiten Komponente erzeugt der Thread fortlau-
fend Ausgaben. Die einzelnen Zeichen des Kommandos „stop 281“ lassen sich verstreut
zwischen den Ausgaben des Threads fi nden. Sobald das Kommando durch Drücken der
Return-Taste abgeschlossen wird, wird die Stop-Methode der Komponente aufgerufen, in
der der Thread angehalten wird. Nach dem Stoppen befi ndet sich die zweite Komponente im
Zustand Resolved, wie die Ausgabe von lb zeigt. Über die Zustände der Komponenten spre-
chen wir spät e r.
Genau so, wie es als Gegenstück zum Start-Befehl den Stop-Befehl gibt, gibt es zu install
auch das Kommando uninstall mit naheliegender Bedeutung. Stellen wir uns vor, wir hätten
wieder die Situation, dass beide Beispielkomponenten installiert und aktiv sind (d. h. der
Thread der Client-Komponente läu momentan). Wenn nun die Server-Komponente deins-
talliert wird (dazu muss das Kommando „uninstall 280“ whrend der laufenden Thread-
Ausgaben eingetippt werden), dann würde man eventuell erwarten, dass dies irgendwelche
Auswirkungen auf die Client-Komponente und ihren Thread haben muss. Dies ist aber nicht
so. Denn weder kann dem Thread-Objekt die Referenz auf das CounterImpl-Objekt weggezo-
gen werden noch wird die Klasse CounterImpl dadurch „entladen“. Somit läu der Thread
auch nach dem Deinstallieren der Server-Komponente weiter. Einen Eff ekt sieht man erst,
wenn man die Client-Komponente wie oben anhält und dann wieder neu startet: Beim Neu-
start wird in der Registratur zur Klasse Counter dann kein Eintrag mehr gefunden. Unsere
Client-Komponente ist so programmiert, dass in diesem Fall kein Thread erzeugt wird.
Wird dagegen die Client-Komponente während der Ausführung deinstalliert, so hält der
Thread an. Dies liegt an zwei Gründen: Zum einen beinhaltet eine Deinstallation immer
auch ein Stoppen der Komponente. Zum anderen wurde die Komponente so programmiert,
dass in der Methode stop der Thread abgebrochen wird. Wenn dies nicht so programmiert
worden wäre, dann würde der Thread auch nach der Deinstallation unserer Client-Kompo-
nente weiterlaufen.
Das Felix-Framework kann durch Drücken von Strg-C oder durch Eingabe des Kommandos
„stop 0“ angehalten werden. Die Komponentenkennung 0 steht für das Framework selbst.
Wird also diese „Komponente“ angehalten, endet die komplette Anwendung.
94 Variationen der Beispiel-Bundles
Im Folgenden wollen wir durch Variation der ersten beiden Beispiel-Bundles verhindern,
dass gewisse Besonderheiten in den Beispielen fälschlicherweise verallgemeinert werden
und die Leserinnen und Leser meinen, dass Bundles diese Besonderheiten notwendiger-
weise besitzen müssen. Als ersten Variationspunkt betrachten wir die Tatsache, dass in
unseren Beispielen die Client-Komponente über eine Schnittstelle auf die Service-Kompo-
nente zugrei . Eine Schnittstelle ist nicht unbedingt notwendig. Man könnte in den beiden
Beispielkomponenten auch komplett ohne die Schnittstelle Counter auskommen. In diesem
Fall würde die Service-Komponente das CounterImpl-Objekt mit CounterImpl.class als ers-
tem Parameter registrieren. Der Client würde dann auch nach CounterImpl.class suchen
und würde ansonsten in seinem Programm jedes Vorkommen des Typs Counter durch
 
Search WWH ::




Custom Search