Ich habe eine Komponente Apache Felix, der wie folgt aussieht Definition ist:Was würde dazu führen, dass die @Activate-Methode nicht für Apache Felix aufgerufen wird?
...
@Component(immediate=true)
@Service
public class myClass implements myClassInterface {
...
@Activate
public void activate(final Map<String, Object> properties) {
//Do activation stuff
}
...
}
Aus der Lektüre der Apache Felix Dokumentation zu den @Component
und @Activate
Anmerkungen (http://felix.apache.org/documentation/subprojects/apache-felix-maven-scr-plugin/scr-annotations.html#component) Ich verstehe, dass das immediate=true
Attribut für den @Component
„sofort aktiviert“ . Mein Problem ist, dass meine activate
Methode scheint nie aufgerufen werden. Ich habe meinen Debugger von dem Moment an, in dem ich mein Projekt erstelle, bis zu dem Moment, als ich den Service myClass
unter Verwendung von OSGi anfordere, aber die activate
Methode scheint nie aufgerufen zu werden.
Also, meine Frage hat ein paar Schichten: 1. Sagen Sie mir, dass immediate=true
Attribut bewirkt, dass die Komponente "sofort aktiviert werden" gibt mir nicht genug Informationen. Bedeutet dies, dass die Komponente sofort nach dem Erstellen des Projekts aktiviert wird, unmittelbar nachdem eine Instanz myClass
erstellt wurde oder unmittelbar nachdem der Dienst myClass
vom OSGi-Paket angefordert wurde? 2. Gibt es irgendetwas, was dazu führen könnte, dass meine Methode activate
trotz meiner Verwendung von immediate=true
nicht aufgerufen wird? Wenn ja, was kann ich tun, um das Problem zu beheben?
Vielen Dank im Voraus für Ihre Hilfe. Bitte lassen Sie mich wissen, wenn ich zusätzliche Informationen bereitstellen muss.
Danke für die nützlichen Informationen. Ich habe in der Felix-Dokumentation keine Informationen gesehen, die darauf hinwiesen, dass die Anmerkungen veraltet waren. Da eine Komponente erst aktiviert wird, wenn die erforderlichen Dienste vorhanden sind, weiß ich, was ich tun kann, um das Debugging zu starten. Woher weiß ich, welche Referenzen für eine bestimmte Komponente obligatorisch sind? – Pr4isethesun
Sie müssen die DS-Spezifikation oder die Dokumentation, die ich verlinkt habe, einchecken. Standardmäßig ist @Reference obligatorisch. –