Как создать простой файл WAR с модулем OSGI
Я новичок в веб-программировании Java. Я хочу создать простое модульное приложение JSF. Я нашел простую учебную ссылку
но, к сожалению, у меня все еще есть вопросы по использованию OSGI:
- Могу ли я создать простой пакет OGI и поместить в него несколько страниц JSF? Если не так, как обычно разрабатываются веб-приложения.
- Можете ли вы дать мне ссылку с примером, как я могу вызывать функции и передавать аргументы из файла 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, поэтому документация по этому вопросу также должна применяться.