Ho un pacchetto di frammenti che ho creato per accedere ad alcune funzionalità di aggiunta a un contenitore di seconda parte. Il mio frammento dovrebbe registrare un servizio per esporre questa nuova funzionalità. Non sembra funzionare. Prima di approfondire la risoluzione dei problemi, mi piacerebbe sapere se questo è permesso anche? Cioè, l'osservatore di fascicoli di Felix SCR guarda o ignora i frammenti?Un pacchetto di frammenti OSGi può pubblicare un servizio dichiarativo?
risposta
Aha, ho trovato la risposta nella specifica, sezione 112.4.2: "Un'intestazione di manifest Service-Component specificata in un frammento viene ignorata da SCR". Questo è coerente con 3.14.3: "Il seguente elenco contiene le intestazioni che non devono essere utilizzate in un pacchetto di frammenti: Attivatore di gruppo"
Sì. Ma il pacchetto host deve essere aperto a questo. Con open, intendo che il bundle host deve avere l'intestazione Service-Components
configurata in modo tale da trovare eventuali descrittori nel frammento. Per esempio:
Service-Components: OSGI-INF/*.xml
troverete tutti .xml
file nella cartella OSGi-INF/
del fascio di accoglienza tutti i frammenti collegati.
Ho visto che il progetto SmartHome di Eclipse utilizza questa soluzione per rendere la propria UI più personalizzabile.
Maggiori informazioni: http://apache-felix.18485.x6.nabble.com/DS-amp-fragments-td5004610.html
Vedi anche http://stackoverflow.com/questions/8592860/component-inside-a-fragment-never-activated, che conferma quello che hai detto, ma con le informazioni aggiunte che il progetto funziona per i frammenti. –