Джерси ресурс не разрешается в OSGI

Я следил за этим обучающим видео, которое показывает, как запустить сервер джерси(EDIT: сервер JAX-RS через Apache Wink, см. Принятый ответ) в OSGI. Это короткое видео, и процесс кажется в основном очень четким. Я не совсем понимаю, как именно HelloWorldResource загружается в Джерси. HelloWorldResource зарегистрирован в контейнере OSGI как сервис, использующий Apache Felix DependencyActivatorBase (который прекрасно работает). Из того, что я собрал, Apache Felix Whiteboard должен каким-то волшебным образом отобразить это как ресурс Джерси, но когда я запускаю его, я получаю 404.

Я знаю, что служба отображается правильно, так как она отображается в консоли, когда я запускаю команду "services". Я знаю, что сервер работает, или я бы не получил 404 не найден. Я дважды проверил комплекты и считаю, что все они установлены правильно.

Любые намеки приветствуются.

1 ответ

Решение

Прежде всего, Амдату не основан на Джерси. Джерси - одна из многих доступных реализаций JAX-RS. Amdatu основан на Apache Wink. Это не должно иметь большого значения для вас, так как вы все равно должны программировать на стандарт.

Amdatu ищет сервисы, зарегистрированные как Object.class в реестре сервисов, и проверяет, помечен ли зарегистрированный сервис аннотацией @Path. В этом случае служба регистрируется как ресурс JAX-RS. Таким образом, модель разработки очень похожа на использование JAX-RS в среде Java EE.

Вы можете установить пакет Apache Felix Dependency Manager Shell для отладки сервисов, зарегистрированных с использованием DM. Введите следующую команду в оболочке: dm <bundleid>, Это перечислит все зарегистрированные сервисы этим пакетом. Вы должны увидеть сервис, зарегистрированный как java.lang.Object. Сделайте то же самое для идентификатора пакета org.amdatu.web.rest.wink. Вы должны увидеть что-то вроде этого для своего сервиса: javax.servlet.Servlet(init.applicationConfigLocation=/conf/application.properties, псевдоним =/somepath,init.requestProcessorAttribute=/somepath) зарегистрирован.

Также проверьте, смотрите ли вы правильный URL. По умолчанию ресурсы RESTful в Amdatu регистрируются в корневом пути (например, "localhost:8080/myresource").

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