Java Reference
In-Depth Information
Noch ein Hinweis: Das Framework besitzt nur einen einzigen Thread, der die Aufrufe aller
Start- und Stop-Methoden aller Komponenten durchführt. Deshalb sollten die Start- und
Stop-Methoden keine allzu lange Ausführungszeit haben, da ansonsten die Funktionsfähig-
keit unseres Komponentensystems gebremst wird. Im Extremfall würde eine Start- oder
Stop-Methode mit einer Endlosschleife unser ganzes Komponenten-Framework lahmlegen
(d. h. es würde nicht mehr auf Änderungen im Installationsverzeichnis reagieren und somit
weder neue Komponenten in das Framework aufnehmen noch die Stop-Methoden zu deins-
tallierender Komponenten aufrufen). Wir gehen also davon aus, dass alle Komponentenent-
wickler so diszipliniert sind, dass sie ihre Start- und Stop-Methoden entsprechend gestalten.
Diese Situation ist für Java-Entwickler übrigens nichts Neues: Auch bei der Programmie-
rung grafi scher Benutzeroberfl ächen kann man eine Anwendung außer Gefecht setzen,
wenn man in eine Listener-Methode (die z. B. auf das Klicken eines Buttons reagiert) eine
Endlosschleife einbaut. Wie bei den grafi schen Benutzeroberfl ächen müsste man auch in
unserem Komponentensystem in dem Fall, dass ein etwas länger dauernde Aktion durch-
geführt werden muss, diese Aktion in einen separaten Thread auslagern. Wir werden ein
Beispiel dafür in einer der noch folgenden Komponenten sehen.
6 .1 . 2 Komponente Nr. 2
Ähnlich wie die erste Beispielkomponente könnten nun weitere Komponenten entwickelt
werden, die unabhängig voneinander im Framework installiert, neuinstalliert und deinstal-
liert werden. Dies bringt nichts wesentlich Neues. Eine neue Herausforderung stellt sich
jedoch, wenn man Komponenten zusammenarbeiten lassen möchte, wenn also z. B. eine
Komponente ein Objekt benutzen möchte, das von einer anderen Komponente bereitgestellt
wird. Um dies zu unterstützen, bietet unser Framework eine Registratur an, bei der Objekte
unter einem Namen an- und abgemeldet werden können. Auß erdem kann man durch Angabe
des passenden Namens eine Referenz auf ein angemeldetes Objekt erhalten. Die Methoden
dazu befi nden sich in der Schnittstelle ComponentContext (s. Listing 6.2), welche das Frame-
work zur Verfügung stellt. Ihre Bedeutung sollte ohne weitere Erläuterung verständlich sein.
Listing 6.2 Schnittstelle ComponentContext
package javacomp.prototype.framework;
public interface ComponentContext
{
public void bind(String name, Object obj);
public Object lookup(String name);
public void unbind(String name);
}
Damit die Komponenten diesen vom Framework bereitgestellten Registraturdienst benutzen
können, werden nicht nur die mit @Start und @Stop annotierten, öff entlichen Void-Methoden
vom Framework aufgerufen, die parameterlos sind, sondern auch solche, die einen einzigen
Parameter des Typs ComponentContext haben. Eine Service-Komponente, welche einen
Dienst bereitstellt, kann in ihrer Start-Methode über den ComponentContext-Parameter ein
Objekt an- und ihrer Stop-Methode wieder abmelden. Eine Client-Komponente, welche den
 
Search WWH ::




Custom Search