2009-09-26 9 views
2

Это крест, размещенный от fusesource forum и servicemmix forum.Servicemix 4, DOSGi и Zookeeper

Я не могу заставить DOSGi работать в FUSE. Я пытаюсь получить DOSGi 1.1-SNAPSHOT CXF с обнаружением Zookeeper на 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. Затем, когда я запускаю образцы с образцом службы impl на одной машине, я вижу создание узла в zookeeper. Затем я запускаю образец клиента на другой машине, и я вижу вывод на служебной машине. Прекрасно работает. У меня есть предупреждение о том, что ошибка xml игнорируется, потому что некоторая XSD не найдена, но она, похоже, ничего не влияет. О, я также должен сначала установить комплект Compendium OSGi.

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

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

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

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

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

ответ

1

Первый пункт, рассматривающий мегакомплекс CXF DOSGi. Я думаю, что это только для быстрого n-грязного взлома в годовой операционной среде 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 для web interface.

+0

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

+0

Кроме того, даже если вы можете запустить службу, отмеченную для обнаружения, и открыть ее как мыльный веб-сервис с пакетом cxf, о котором вы упомянули, удалив исходный конфликтный, без распределенного обнаружения, вы фактически не разговариваете с zookeeper. Ваша перечисленная конфигурация не включает в себя cxf-dosgi-ri-discovery-singlebundle-distribution-1.1-SNAPSHOT.jar, который содержит cxf-dosgi-ri-discovery-distribution-1.1-SNAPSHOT.jar и cxf-dosgi-ri- discovery-distribution-zookeeper-wrapper-1.1-SNAPSHOT.jar, а также свою собственную, по-видимому, важную агрегацию сервисов. –

+0

Чтобы ответить на ваш вопрос, мне очень нравится сам контейнер OSGi, через феликс и равноденствие, а также с характеристиками OSGi. Тем не менее, эти конфликты пучков меня убивают. –