2012-07-13 16 views
5

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

8

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"

+1

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. –

2

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

Problemi correlati