Вопрос

Это перекрестное сообщение с форум 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 связки.Для DOSGi я просто использую cxf-dosgi-ri-singlebundle-distribution-1.1-SNAPSHOT.jar для DSW и cxf-dosgi-ri-discovery-singlebundle-distribution-1.1-SNAPSHOT.jar для открытия зоопарка.Затем, когда я запускаю образцы пакетов с образцом сервиса impl на одной машине, я вижу создание узла в zookeeper.Затем я запускаю образец клиента на другой машине и вижу результат на сервисной машине.Отлично работает.У меня действительно есть предупреждение об ошибке xml, которая игнорируется, потому что некоторые XSD-файлы не могут быть найдены, но, похоже, это ни на что не влияет.О, я также должен сначала установить пакет OSGi compendium bundle.

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

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

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

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

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

Это было полезно?

Решение

Первый момент, глядя на мега-пакет CXF DOSGi, я думаю, что это только для быстрого взлома в простой среде выполнения 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.dosgi-ri-dws.cxf-1.0.jar

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top