Servicemix 4, DOSGi и Zookeeper


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

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

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

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

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

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

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

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

1 2

1 ответ:

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

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

  • com.springsource.org.jdom-1.0.0.jar
  • cxf-bundle-minimal-2.2.1.jar
  • cxf-dosgi-ri-discovery-local-1.0.jar
  • cxf.досги-Ри-ДВС.в CXF-1.0.jar
Используя консоль Servicemix, я перечислил все пакеты и увидел, что все они находятся в состоянии Active (как и ожидалось). Я перечислил сервисы, и 2 пакета CXF DOSGi экспортировали сервисы, так что, похоже, все работало правильно. В журнале не было отмечено никаких ошибок.

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

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