2015-04-09 9 views
2

Моя цель - запустить приложение JSF в OSGI Framework. Итак, я пытаюсь развернуть WAR-файл в контейнер сервлета для веб-приложений OSGi под названием PAX-WEB. У меня есть правильная работающая реализация JSF, работающая на сервере приложений WildFly 8.0. Я успешно создал OSGi-ified WAR-файл из этого приложения. При попытке развернуть его на PAX-WEB с использованием Maven следующее сообщение об ошибке:Apache Karaf Развертывание .War-файла

недостающее требование: javax.servlet.annotation

У меня есть эти JARs в /lib папке моего приложения: jsf-api-2.1.7, jsf-impl-2.1.7, jsp-api-2.1, jstl-1.2. Когда я добавляю javax.servlet-api-3.0.1.jar в мой файл WAR и повторно развернуть его, на этот раз следующее сообщение об ошибке:

javax.faces.webapp.FacesServlet не может быть приведен к javax.servlet.Servlet

С эта ошибка, я могу запустить мою страницу JSF, но она не отображает теги JSF.

ответ

1

Здесь вы смешиваете два вопроса. Во-первых, в вашей инфраструктуре отсутствует классы сервлетов. Поэтому в этом случае я предлагаю использовать пакет pax-web-jetty-bundle. Это пакет uber, а также содержит и экспортирует классы сервлетов. В этом случае убедитесь, что у вас нет доступных сервлетов в вашей инфраструктуре. Btw. взглянув на образцы, и тесты интеграции Pax Web сами помогают понять, какие библиотеки нужны.

Вторая проблема, с которой вы столкнулись, - это вопрос о добавлении классов сервлетов к войне, это запрещено для OSGi и спецификации сервлета.

Так что без каких-либо дополнительных знаний о вашем сценарии вам может быть лучше с использованием сервера Apache Karaf (он использует Pax Web), поскольку все инфраструктурные пакеты уже включены и известны для совместной работы.

Еще одна вещь: вы получаете больше и лучшую обратную связь в списке рассылки ops4j.

Смежные вопросы