Можете ли вы использовать пользовательские компоненты JSF в разных пакетах OSGi?
Вопрос
Кто-нибудь использовал OSGi и JSF вместе?
Я спрашиваю, потому что JSF использует магию загрузчика классов для поиска пользовательских компонентов.Из учебника (выделено мной):
Этот файл конфигурации в конечном итоге будет мета-инф/faces-config.xml в файле .jar, который представляет этот компонент. JSF будет искать такое имя файла в каждом из файлов .jar, которые загружаются во время выполнения (В каталоге Web-Inf/Lib для .war файлов) и используйте каждого из них в его конфигурации.Таким образом, несколько компонентов .JAR -файлов могут быть объединены в одно веб -приложение, и все компоненты, описанные в каждом .JAR, будут доступны для приложения.
Я хотел бы иметь возможность использовать пользовательские компоненты JSF в виде пакетов OSGi (т. е.пользовательские компоненты находятся в других пакетах OSGi, чем среда выполнения JSF), и чтобы JSF мог найти их во время выполнения.
Кто-нибудь делал что-нибудь подобное?
Решение
Это возможно следующим образом:
- Ваш веб-пакет osgi должен иметь «Require-Bundle» в MANIFEST.MF, указывающий на пакет, содержащий компоненты.
- В вашем jar-файле компонента должен быть Export-Package, содержащий META-INF и подпакеты META-INF, где есть любой файл, связанный с JSF (и, конечно, стандартные пакеты компонента).Например:Экспортный пакет:МЕТА-ИНФ,МЕТА-ИНФ.ресурсы...
Если вы используете плагин maven-bundle, вы должны использовать апостроф и равно для экспорта META-INF и подпакетов.Например:
<Export-Package>
a.b.c,
'=META-INF',
'=META-INF.resources',
...
</Export-Package>
В JSF Spec 2.2 могут быть части, касающиеся взаимоотношений JSF-OSGI.Чтобы увидеть прогресс, см. http://java.net/jira/browse/JAVASERVERFACES_SPEC_PUBLIC-942
Другие советы
Я не уверен, что это точно решает вашу проблему, но я нашел эту тему Весна и осги интересно, особенно это конкретный ответ где зависимости и путь к классам включены в MANIFEST.MF.
Эта тема также приводит к обновлению этого для руководство по динамическим модулям Spring (DM) для сервисных платформ OSGi™ что тоже может представлять интерес.