Servicemix 4, DOSGi и Zookeeper

Это кросс-сообщение от форума fusesource и форума servicemmix.

Я не могу заставить DOSGi работать в FUSE. Я пытаюсь получить CXF DOSGi 1.1-SNAPSHOT с обнаружением Zookeeper на FUSE 4.1.0.2. Я также использую Zookeepr 3.2.1.

Все отлично работает на Felix 2.0.0. Я просто следую инструкциям на странице DOSGi Discovery и затем устанавливаю демонстрационные пакеты Discovery. Для DOSGi я просто использую cxf-dosgi-ri-singlebundle-distribution-1.1-SNAPSHOT.jar для DSW и cxf-dosgi-ri-discovery-singlebundle-distribution-1.1-SNAPSHOT.jar для обнаружения zookeepr. Затем, когда я запускаю примеры пакетов с примером службы, подразумеваемой на одном компьютере, я вижу создание узла в zookeeper. Затем я запускаю пример клиента на другом компьютере и вижу вывод на сервисном компьютере. Работает отлично. У меня есть предупреждение о том, что ошибка xml игнорируется, потому что некоторые XSD-файлы не могут быть найдены, но, похоже, это ни на что не влияет. О, я также должен сначала установить сборник OSGi.

Когда я переезжаю в Fuse, мне не везет. В комплект OSGi Compendium входит предохранитель, поэтому устанавливать его не нужно. Я должен просто иметь возможность установить одинарный пакет dosgi-ri и один комплект dosgi-ri-discovery, но это не работает. Dosgi-ri singlebundle имеет всевозможные накладывающиеся пучки со смесью. Я получаю ошибку о порте 8081? или какой-либо параметр osgi.http.service, который уже используется. По всей видимости, пакет dosgi-ri singlebundle поставляется с веб-сервисом pax, который читает то же свойство, что и пакет услуг http servicemix, поставляемый с servicemix. Вот когда я переключаюсь на cxf-dosgi-ri-multibundle-distribution-1.1-SNAPSHOT.zip и распаковываю его, чтобы взять нужные мне части. Я вынимаю пакет dsw из комплекта dosgi-ri и устанавливаю его. Не повезло из-за зависимости от jdom. Затем я устанавливаю jdom, который входит в ri multibundle, который работает нормально. Затем вернитесь в dsw, и он установится, так что я думаю, что что-то получится. Пора вернуться и установить единый пакет ri-discovery. Когда я начинаю это, я получаю исключение класса pax logging service, говорящее о том, что его нельзя преобразовать в osgi logservice или что-то еще. Но это всего лишь ошибка записи в журнал, и внизу написано, что он не может найти транспортный класс для http://schemas.xmlsoap.org/soap/http. Хорошо, так что ведение журнала испорчено, и я пропускаю некоторый транспортный класс. Что ж, ясно, что это происходит из-за того, что не достаточно установить из ri multibundle, потому что он работал на Феликсе. Так что еще там нужно. Cxf-minimal-bundle при проверке имеет отсутствующий класс, вызывающий эту последнюю ошибку. Так что я устанавливаю это. Попробуйте запустить пакет обнаружения, но я получаю исключение от corbabroker. Wtf. Чья корба во всем этом? Затем я возвращаюсь и отменяю все это и пытаюсь придерживаться одноразовых дистрибутивов ri и ri-discovery, но просто отключаю службу servicemix http. Это приводит к сбою servicemix, и я не могу перезапустить его, потому что компоненты cxf jbi заканчиваются неудовлетворенной зависимостью. Странный. Я просто проигнорирую это, потому что я так или иначе не использую их, и попытаюсь начать свои образцы. Невозможно запустить образцы, потому что он говорит, что причал не может начаться, потому что порты уже используются. Не имеет смысла, потому что я уже отключил сервис httpmix службы. Затем я перезагружаю причал. Работает? Может быть. Мой сервис регистрируется, и я могу перейти к wsdl с помощью Firefox, но без регистрации в zookeeper. Попробуйте закрыть пакет ri-discovery и перезапустить его, но я получаю nullpointerexception. Очевидно, что ri-discovery фактически никогда не запускался из-за одной из вышеупомянутых ошибок. Затем я начал пытаться разобрать однояруску ri-discovery и вытащить внутренности. Это не сработало, потому что все это, по-видимому, необходимо, даже если в нем есть некоторые люди, без которых мы могли бы обойтись.

Конец истории. Не могу заставить его работать. Кто-нибудь еще может заставить его работать? Я просто хочу запустить образцы обнаружения в SMX4. Я уверен, что это просто проблема конфликта пакетов. Разве это не то, что OSGi должен исправить??? Это хуже, чем просто рассказывать мне, от каких банок ты зависишь, и заставлять меня настроить мой путь к классам. По крайней мере, тогда я в конечном итоге запустил эту штуку.

Я думаю, что мои следующие шаги будут заключаться в том, чтобы повторить попытку с ri-multibundle, только dsw и jdom, плюс ri-discovery singlebundle. Затем я попробую некоторые из пакетов cxf-fuse или некоторые из пакетов cxf-rt, чтобы обойти проблему транспортировки мыла.

Редактировать заметки: мне нужно больше, чем просто показ комплектов DOSGi в активном состоянии. На самом деле они мало что делают, пока вы не попытаетесь раскрыть через них службу. Мне нужно, чтобы несколько машин регистрировали сервисы с помощью экземпляра zookeeper, а также другие машины, использующие эти сервисы - так же, как и запущенный пример DOSGi Discovery.

Я смог заставить cxf представить образец распределенного сервиса как мыльный веб-сервис, используя минимальный упомянутый пакет cxf, либо удалив части оригинальных пакетов cxf и перезапустив сервис Jetty, а затем запустив сервис примера... или установив минимальный пакет cxf, затем запустив мой сервис, затем немедленно удалив минимальный пакет cxf, а затем перезапустив причал... Я думаю, что это был заказ. Ни один из них не будет работать при чистом запуске, и необходимость перезапускать сервисы как процедуру, чтобы заставить DOSGi работать, просто плоха. Я даже не знаю, почему установка и удаление ничего не дадут - не должно быть никаких артефактов.

1 ответ

Решение

Во-первых, глядя на мегабандл CXF DOSGi, я думаю, что это только для быстрого хакерского взлома в голой среде OSGi, в основном минимальная среда, предоставляемая Equinox и Felix. Он не будет предназначен для более богатых сред, таких как FUSE или Servicemix, так как вы, скорее всего, столкнетесь с сервисами из пакета и платформы, как вы, похоже, видели.

Мне удалось запустить Servicemix 4.0 для чистого запуска (это на Windows), а затем я развернул в горячем режиме:

  • com.springsource.org.jdom-1.0.0.jar
  • CXF-пачке минимал-2.2.1.jar
  • CXF-dosgi-ри-открытие-местный 1.0.jar
  • cxf.dosgi-ри-dws.cxf-1.0.jar

Используя консоль Servicemix, я перечислил все комплекты и увидел, что все перечисленное Active состояние (как и ожидалось). Я перечислил сервисы, и 2 пакета CXF DOSGi экспортировали сервисы, так что, похоже, они работали правильно. В журнале не было сообщений об ошибках.

Насколько вы знакомы с OSGi? Servicemix выглядит довольно большим, и совместное изучение OSGi, Servicemix и CXF/DOSGi не будет легким (на мой взгляд).

Поставляемая консоль не подходит для OSGi, и я бы предложил установить комплекты консоли Apache Felix для веб-интерфейса.

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