Pouvez-vous avoir des composants personnalisés JSF dans différents bundles OSGi?
Question
Quelqu'un at-il utilisé OSGi et JSF ensemble?
Je demande parce que JSF utilise la magie du chargeur de classe pour trouver des composants personnalisés. À partir d'un tutoriel (c'est moi qui souligne):
Ce fichier de configuration finira par en étant META-INF / faces-config.xml dans le fichier .jar qui représente cela composant. JSF recherchera un tel nom de fichier dans chacun des fichiers .jar chargés au moment de l'exécution (dans la Répertoire WEB-INF / lib pour les fichiers .war) et utiliser chacun d'eux dans son configuration. De cette façon, plusieurs les fichiers .jar composant peuvent être combinés dans une application Web, et tous les composants décrits dans chaque .jar sera disponible pour l'application.
J'aimerais pouvoir utiliser les composants personnalisés JSF en tant que bundles OSGi (c.-à-d. que les composants personnalisés appartiennent à des bundles OSGi différents de ceux du moteur d'exécution JSF) et que JSF puisse les trouver au moment de l'exécution.
Quelqu'un a-t-il fait quelque chose de similaire?
La solution
Cela est possible de la manière suivante:
- Votre offre Web osgi doit comporter "Require-Bundle". dans MANIFEST.MF pointant vers l’ensemble contenant les composants
- Votre fichier JAR de composant doit contenir Export-Package contenant META-INF et des sous-packages de META-INF contenant un fichier associé à JSF (et bien sûr des packages standard du composant). Par exemple: Export-Package: META-INF, META-INF.resources ...
Si vous utilisez le plug-in maven-bundle, vous devez utiliser une apostrophe et un équivalent pour exporter META-INF et ses sous-packages. Par exemple:
<Export-Package>
a.b.c,
'=META-INF',
'=META-INF.resources',
...
</Export-Package>
Dans la spécification JSF 2.2, il pourrait y avoir des éléments concernant la relation JSF-OSGI. Pour voir les progrès, voir http://java.net/jira/browse/JAVASERVERFACES_SPEC_PEC_PUBLIC-942
Autres conseils
Je ne suis pas sûr qu'il réponde exactement à votre problème, mais j'ai trouvé ce fil de discussion sur Le printemps et osgi sont interressants, en particulier réponse spécifique où les dépendances et le chemin d'accès aux classes sont regroupés dans le fichier MANIFEST.MF.
Ce fil mène également à la mise à jour de ce fichier pour le didacticiel sur les modules dynamiques Spring (DM) pour OSGi & # 8482; Plates-formes de services qui pourraient également présenter un intérêt.