2016-10-07 4 views
1

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

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

Благодаря

+1

Вы можете использовать декларативное обслуживание и Джерси, посмотрите на https://jersey.java.net/nonav/documentation/latest/user-guide.html#deployment.osgi –

ответ

0

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

2

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

См. cxf-dosgi rest sample.

В примере используется стандартная аннотация DS и плагин maven bundle для создания компонента DS xml на лету.

Если вы предпочитаете иметь чертеж во время выполнения, вы можете использовать план-maven-plugin. See this example.

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