Не ответ специально для JSF (this может быть), но для OSGi веб-приложений в целом взглянуть на Pax-Web, если вы используете maven.
Самый простой способ начать с Pax-Web, вероятно, использовать Karaf, а затем выполнить команду features:install war
После того, как WAR (или WAB - Web App Bundle) развертывается вы будете иметь возможность использовать OSGi-bundlecontext атрибут инициализации сервлета, например:
extends HttpServlet {
BundleContext bundleContext;
@Override
public void init() throws ServletException
{
bundleContext = (BundleContext) getServletContext().getAttribute("osgi-bundlecontext");
}
с помощью этого вы можете посмотреть услуги в реестре OSGi.
Вам нужно обратить внимание на Manifest.mf записи сверток в два, в частности:
Bundle-ClassPath: ./,WEB-INF/classes
Webapp-Context: context-root-name-here
или в OSGi совместимый контейнер WebApp вам нужно добавить:
Web-ContextPath: context-root-name-here
Там больше информации в specifications см предприятия или КОМПЕНДИУМ PDF-файлы для v4.2
EDIT: для развертывания в JBoss вы, скорее всего, захотите использовать поддержку WAB, см. Раздел 128 спецификации предприятия 4.2. Также это может помочь: http://community.jboss.org/message/619443 Интересно, что JBoss AS7 использует pax-web, поэтому документация для этого также должна в значительной степени применяться.
Оказалось, что я буду использовать EAR-упаковку, потому что мне нужно использовать адаптер ресурсов. Является ли выше код совместимым с EAR-пакетом? –
Я отредактировал свой ответ с некоторой специфической информацией JBoss, в частности, вы захотите создать WAB (также добавили ссылку для maven-bundle-plugin) – earcam
Еще один вопрос: я создал простой пакет OSGI, который делает запросы к базе данных используя источник данных JBoss 7.1.0. Когда я пытаюсь развернуть его, JBoss 7.1.0 бросает меня на аранжировку. Возможно ли, что это может быть ошибкой в JBoss? –