Как создать простой файл WAR с модулем OSGI - PullRequest
1 голос
/ 19 декабря 2011

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

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

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

Привет

1 Ответ

4 голосов
/ 29 декабря 2011

Не является ответом специально для 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

Или в WebApp, совместимом с OSGi.Контейнер, который необходимо добавить:

Web-ContextPath: context-root-name-here

Более подробную информацию можно найти в спецификациях , см. PDF-файлы для предприятий или сборника для v4.2

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

...