Сервис RESTful в Karaf без blueprint xml

Я новичок в Karaf, поэтому искал ресурсы для создания проекта для веб-сервисов RESTful с использованием аннотаций felix и без использования класса BundleActivator (я имею в виду фактический класс, который должен быть написан мной, но это нормально, если какой-то компилятор или плагин maven делает то же самое для меня) и XML-файл чертежа. До сих пор я добился успеха в первой части (часть BundleActivator), которая теперь после компиляции автоматически создает мой MANIFEST.MF с операторами импорта и экспорта, создает соответствующий файл XML для каждого класса компонентов и упаковывает его в хороший пакет jar, который работает очень хорошо, когда я развертываю его в контейнере Karaf. Но что не работает, так это службы RESTful. Пакет развернут правильно, но URL-адреса REST не отображаются, и поэтому я не могу получить к ним доступ.

Пожалуйста, помогите мне сделать это. Я не хочу писать XML-файл, который нужно изменять каждый раз при добавлении или удалении службы отдыха.

Спасибо


person Jayesh    schedule 07.10.2016    source источник
comment
Вы можете использовать Declarative Service и Jersey, посмотрите на Джерси. java.net/nonav/documentation/latest/   -  person Alexandre Cartapanis    schedule 10.10.2016


Ответы (2)


Если вы хотите полностью избежать блупринта, вам следует использовать cxf-dosgi. Вы просто аннотируете свою оставшуюся службу с помощью jaxrs и публикуете ее как службу OSGi с некоторыми специальными свойствами.

См. пример остатка cxf-dosgi.

В примере используется стандартная аннотация DS и подключаемый модуль пакета maven для создания XML-файла компонента DS на лету.

Если вы предпочитаете иметь план во время выполнения, вы можете использовать плагин blueprint-maven-plugin. Посмотрите этот пример.

person Christian Schneider    schedule 07.10.2016

Я нашел способ сделать это без использования функции CXF. То есть создайте класс компонента и в методе активации получите объект ConfigurationAdmin и поместите требуемый контекстный путь в процесс сервера jersy (используя jar издателя jersey). Используя этот метод, я смог развернуть любой rest/serlvet в Karaf без использования файла blueprint.xml. Надеюсь, это поможет.

person Jayesh    schedule 17.11.2016