2017-06-16 6 views
1

Ich habe eine OSGi-Komponente:Gültige Wege von einer OSGi-Komponente zu unterbrechen aktiviert wird

@Component(immediate=true) 
public class SomeComponent implements SomeInterface {...} 

Beachten Sie, dass die Komponente unmittelbar. Da die Komponentenklasse eine Schnittstelle implementiert, verstehe ich, dass ein Dienst automatisch (im Rahmen der) Aktivierung der Komponente registriert wird.

Jetzt möchte ich in der Lage sein, die Komponentenaktivierung und Service-Registrierung dynamisch zu unterbrechen, wenn bestimmte Bedingungen erfüllt sind. Ein "ComponentException" in einem Komponentenaktivator zu werfen scheint die Aufgabe nicht zu erfüllen:

@Activate 
public void activate() { 
    if (notReady) 
    throw new ComponentException("Component not ready"); 
} 

Irgendwelche Vorschläge? Vielen Dank!

Antwort

2

Sie können die Serviceregistrierung, die vor der Aktivierung stattfindet, nicht vormerken. Sie wären mit zwei Komponenten besser dran. Eine, die unmittelbar ohne Dienst ist, die entscheidet, ob die zweite Komponente, die den Dienst hat, aktiviert oder deaktiviert wird. Diese zweite Komponente kann standardmäßig deaktiviert werden.

Verwandte Themen