Java Reference
In-Depth Information
Counter befi ndet. Unsere Service-Komponente enthält in diesem Fall nur die Klasse Coun-
terImpl (s. Listing 9.8), die sich von der vorhergehenden Version aus Abschnitt 9.5 (das war
die ursprünglichen Version aus Listing 9.3 mit der Änderung, dass die Schnittstelle Counter
aus dem Package javacomp.osgi.bundle0 stammt) dadurch unterscheidet, dass — rein zu
Demonstrationszwecken — noch zwei Methoden mit den Namen activate und passivate hin-
zugefügt wurden.
Listing 9.8 Klasse CounterImpl zur Verwendung mit Declarative Services
package javacomp.osgi.bundle4;
import javacomp.osgi.bundle0.Counter;
import org.osgi.service.component.ComponentContext;
public class CounterImpl implements Counter
{
private static final int INCREMENT = 1;
private static final String VERSION = "version " + INCREMENT;
private int counter;
//Methoden increment, reset und version wie bisher:
...
protected void activate(ComponentContext cc)
{
System.out.println(getClass().getName() + ".activate");
}
protected void passivate(ComponentContext cc)
{
System.out.println(getClass().getName() + ".passivate");
}
}
Die Klasse CounterImpl ist eine POJO-Klasse, implementiert also nicht die Schnittstelle
BundleActivator mit den Methoden start und stop. Unsere Service-Komponente besitzt auch
keine weitere Klasse, die BundleActivator implementiert. Falls Methoden beim Starten und
Stoppen aufgerufen werden sollen, dann können diese in der XML-Datei angegeben werden
(s. später). Diese Methoden können zwar einen beliebigen Namen tragen, müssen aber als
Rückgabetyp void, die Sichtbarkeit public oder protected und ein Argument des Typs Com-
ponentContext haben (der Typ ComponentContext stammt von der Komponente „Confi gura-
tion Admin Service“). Die Manifest-Datei unserer Service-Komponente enthält jetzt keinen
Eintrag mehr für Bundle-Activator. Folglich muss auch das dazugehörige Package org.osgi.
framework nicht mehr importiert werden. Es kommt aber für ComponentContext ein Import
des Package org.osgi.service.component hinzu. Auß erdem befi ndet sich in der Manifest-
Datei eine neue Zeile mit dem Schlüsselwort Sevice-Component, in dem die XML-Datei, die
von der Declarative-Services-Komponente ausgewertet wird, benannt ist. Die Manifest-Datei
für unsere neue Service-Komponente sieht damit wie folgt aus:
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: CounterService
 
Search WWH ::




Custom Search