Java Reference
In-Depth Information
public synchronized void unbind(String name)
{
registry.remove(name);
}
}
Übrigens könnte man bei der Methode bind noch prüfen, ob schon ein Eintrag desselben
Namens in der Registratur existiert. Falls dies so ist, so könnte man eine Ausnahme (z. B.
eine IllegalArgumentException) werfen. In unserer Implementierung wird dies nicht
geprü . Somit würde ein Eintrag, den es für diesen Namen schon gibt, durch den neuen
Eintrag überschrieben. Eine weitere Variante wäre, dass man sich für jeden Eintrag merkt,
von welcher Komponente er stammt. Beim Entfernen einer Komponente könnte man dann
automatisch alle die Einträge, welche die gerade zu entfernende Komponente hinzugefügt
und noch nicht selbst wieder herausgenommen hat, löschen. Um die Implementierung mög-
lichst einfach zu halten, wurden diese Varianten nicht realisiert, obwohl es keinen allzu
großen Aufwand erfordern würde. OSGi bietet diesen Komfort im Gegensatz dazu.
Eine weitere Klasse ist die Klasse Main, welche die Methode main enthält, die das Frame-
work ausführt. Die Methode main enthält die Initialisierung der in Bild 6.3 gezeigten
Objekte sowie eine Schleife, in der check auf das erzeugte CheckedDirectory-Objekt und
anschließend sleep zum Pausieren wiederholt aufgerufen wird. Durch das Drücken der
Return-Taste wird das Framework wieder beendet. Dabei werden alle noch vorhandenen
Komponenten entfernt. Für die Namen des Installations- und des Arbeitsverzeichnisses
sind Konstanten in der Klasse Main defi niert, die als Parameter den Konstruktoren von
CheckedDirectory bzw. WorkSpace übergeben werden. Sollten Sie das Framework selbst auf
Ihrem Rechner ausführen wollen, so ist es ratsam, die Namen der Verzeichnisse zuerst
Ihren Verhältnissen anzupassen. Die Verzeichnisse müssen übrigens nicht existieren; das
Framework legt die Verzeichnisse selber an, falls sie nicht vorhanden sind. Das Arbeitsver-
zeichnis wird am Ende auch wieder gelöscht.
Der komplette Code des Frameworks befi ndet sich im Package javacomp.prototype.frame-
work. Die in diesem Abschnitt bisher diskutierten Klassen und Schnittstellen zur Realisie-
rung des Frameworks sind (mit Ausnahme von Main) nicht-öff entlich. Daneben gibt es noch
die öff entlichen Elemente, die von den Komponenten dieses Frameworks benutzt werden.
Dies sind die Schnittstelle ComponentContext, die schon in Listing 6.2 gezeigt wurde, sowie
die Annotationen @Start (s. Listing 6.12) und @Stop (sehr ähnlich wie @Start).
Listing 6.12 Annotation Start
package javacomp.prototype.framework;
import java.lang.annotation.*;
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface Start
{
}
 
Search WWH ::




Custom Search