Können Sie JSF benutzerdefinierte Komponenten in verschiedenen OSGi-Bundles haben?
Frage
Hat jemand verwendet OSGi und JSF zusammen?
Ich frage, weil JSF-Klasse-loader Magie verwendet benutzerdefinierte Komponenten zu finden. Von einem Tutorial (Hervorhebung von mir):
Diese Konfigurationsdatei wird am Ende wobei META-INF / faces-config.xml in der .jar-Datei, die dies entspricht Komponente. JSF sucht nach eine solche Dateinamen in jedem der .jar-Dateien , die zur Laufzeit (in der geladen WEB-INF / lib Verzeichnis für .war-Dateien) und nutzt jede von ihnen in seinem Aufbau. Auf diese Weise mehr Komponente .jar-Dateien können kombiniert werden in einer Web-Anwendung, und alle Die Komponenten in jedem .jar- beschrieben wird für die Anwendung verfügbar sein.
Ich möchte in der Lage sein, JSF benutzerdefinierte Komponenten wie OSGi-Bundles zu haben (das heißt kundenspezifische Komponenten sind in verschiedenem OSGi-Bundles als die JSF-Laufzeit) und für JSF der Lage sein, diese zur Laufzeit zu finden.
Hat jemand etwas getan ähnlich?
Lösung
Es ist möglich, auf folgende Weise:
- Ihr Web-OSGi-Bundle hat "Require-Bundle" in MANIFEST.MF haben, um das Bündel zeigt, die die Komponenten enthält
- Ihre Komponente jar hat Export-Paket enthält META-INF und Subpackages von META-INF haben, wo es eine JSF ist zugehörige Datei (und natürlich auch Standardpakete der Komponente). Zum Beispiel: Export-Package: META-INF, META-INF.resources ...
Wenn Sie Maven-Bundle verwenden Plugin Sie einen Apostroph und eine gleiche für den Export von META-INF und Unterpaketen verwenden. Zum Beispiel:
<Export-Package>
a.b.c,
'=META-INF',
'=META-INF.resources',
...
</Export-Package>
In JSF Spec 2.2 könnte es Teile über JSF-OSGi-Beziehung sein. Um den Fortschritt zu sehen http://java.net/jira/browse/JAVASERVERFACES_SPEC_PUBLIC-942
Andere Tipps
Ich bin nicht sicher, dass es genau Ihr Problem nicht beantworten, aber ich fand diesen Thread über Frühling und osgi interresting, vor allem diese Tutorial über Spring Dynamische Module (DM) für OSGi ™ Service Platforms , die auch von Interesse sein können.