2009-10-20 2 views
2

Какие пакеты мне нужно установить? По крайней мере, это должен быть контейнер сервлетов/веб-сервер, такой как Jetty, но будет ли базовый пакет org.apache.felix.http.jetty, или есть что-то еще, что необходимо для обнаружения web.xml в других пакетах?Как развернуть webapp в Apache Felix?

Я устанавливаю webapp в стандартную WAR, добавляю заголовки OSGi и все ли сделано? Или существуют ли какие-либо специфические заголовки webapp, необходимые для среды OSGi?

Какая еще конфигурация должна быть выполнена?

Каковы варианты автоматизации этих шагов с использованием Maven?

Я попробовал развернуть комплект org.apache.felix.http.jetty, и я получаю сообщение Jetty с 404 на localhost: 8080. Затем я попробовал простой webapp с файлом статического HTML, настроенным как welcome-file. Насколько я могу судить, Jetty даже не замечает дескриптор развертывания, по крайней мере, развертывание тестового webapp в Felix ничего не меняет.

ответ

1

Jetty и webapp сами по себе недостаточно, должен быть некоторый клей, который фактически регистрирует webapp на веб-сервере в определенном контексте.

Один пример, который работает:

  • использовать веб-сервис Pax в org.ops4j.pax.web.pax-web-service пачке как HTTP Service, он работает Jetty, слишком
  • добавить Webapp-Context заголовок вашего комплекта манифеста
  • использовать Расширитель веб-страниц Pax, чтобы искать этот заголовок, когда ваш пакет регистрируется, он затем подключит его к службе http.

По какой-то причине это должен быть веб-сервис Pax, если я заменю его базовым пакетом причала из org.apache.felix, он не будет правильно разрешать URL.

Я все еще далеко от понимания того, что здесь происходит, но по крайней мере я получил его работу. Я подозреваю, что вы можете обойтись без пакетов Pax и заголовка пакета, если вы позволите своему пакету Webapp сделать что-то в своем активаторе пакетов, чтобы выполнить подключение.

+0

Возможно, регистрация возможна посредством инъекций через декларативные услуги (если это не так, это обязательно должно быть). – pmf

1

Вам не нужно использовать Pax Web, но это делает вещи намного проще. Без Pax Web вам понадобится пакет, который реализует HTTP-службу OSGi (для этого есть комплект Jetty), затем получите ссылку на службу HttpService. Вы можете зарегистрировать свой webapp с этим, но это утомительно. Взгляните на веб-код Pax, если вы хотите увидеть детали gory. Pax Web ничего не добавляет к HttpService, но просто обрабатывает все сбои в регистрации.