Puoi avere componenti personalizzati JSF in diversi bundle OSGi?
Domanda
Qualcuno ha usato OSGi e JSF insieme?
Chiedo perché JSF usa la magia del caricatore di classi per trovare componenti personalizzati. Da un tutorial (mio accento):
Questo file di configurazione finirà essendo META-INF / faces-config.xml nel file File .jar che rappresenta questo componente. JSF cercherà tale nome del file in ciascuno dei file .jar che vengono caricati in fase di esecuzione (in Directory WEB-INF / lib per file .war) e usa ciascuno di essi nel suo configurazione. In questo modo, multipli i file .jar del componente possono essere combinati in un'unica applicazione Web e tutto il resto i componenti descritti in ogni .jar sarà disponibile per l'applicazione.
Vorrei poter avere componenti personalizzati JSF come bundle OSGi (ovvero i componenti personalizzati sono in bundle OSGi diversi rispetto al runtime JSF) e consentire a JSF di trovarli in fase di esecuzione.
Qualcuno ha fatto qualcosa di simile?
Soluzione
È possibile nel modo seguente:
- Il tuo bundle web osgi deve avere " Require-Bundle " in MANIFEST.MF che punta al bundle che contiene i componenti
- Il jar del componente deve avere Export-Package contenente META-INF e pacchetti secondari di META-INF in cui è presente un file relativo a JSF (e ovviamente pacchetti standard del componente). Ad esempio: Export-Package: META-INF, META-INF.resources ...
Se usi il plugin maven-bundle devi usare un apostrofo e un uguale per esportare META-INF e sotto-pacchetti. Ad esempio:
<Export-Package>
a.b.c,
'=META-INF',
'=META-INF.resources',
...
</Export-Package>
Nella specifica 2.2 JSF potrebbero esserci parti sulla relazione JSF-OSGI. Per vedere i progressi vedi http://java.net/jira/browse/JAVASERVERFACES_SPEC_PUBLIC-942
Altri suggerimenti
Non sono sicuro che risponda esattamente al tuo problema, ma ho trovato questa discussione su Primavera e osgi interessanti, specialmente questo risposta specifica in cui dipendenze e percorso di classe sono raggruppati in MANIFEST.MF.
Quel thread porta anche all'aggiornamento di questo per tutorial su Spring Dynamic Modules (DM) per OSGi & # 8482; Piattaforme di servizi che potrebbero anche essere di interesse.