Как создать простой файл WAR с модулем OSGI

Я новичок в веб-программировании Java. Я хочу создать простое модульное приложение JSF. Я нашел простую учебную ссылку

но, к сожалению, у меня все еще есть вопросы по использованию OSGI:

  1. Могу ли я создать простой пакет OGI и поместить в него несколько страниц JSF? Если не так, как обычно разрабатываются веб-приложения.
  2. Можете ли вы дать мне ссылку с примером, как я могу вызывать функции и передавать аргументы из файла WAR в модуль OSGI.

С уважением

1 ответ

Решение

Не ответ специально для JSF ( это может быть), но для веб-приложений 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

Там больше информации в спецификациях, см. Корпоративный или сборник PDF для v4.2

РЕДАКТИРОВАТЬ: Для развертывания в JBoss вы, скорее всего, захотите использовать поддержку WAB, см. Раздел 128 спецификации предприятия 4.2. Также это может помочь: http://community.jboss.org/message/619443 Интересно, что JBoss AS7 использует pax-web, поэтому документация по этому вопросу также должна применяться.

Другие вопросы по тегам