Клиент веб-службы OSGi SOAP

Я пытаюсь настроить клиент веб-службы из OSGi, я использую Felix в качестве контейнера.

Пока я пробовал использовать Apache CXF. Это не будет работать с моей веб-службой, поскольку она кодируется RPC / и не поддерживается, когда я пытаюсь создать заглушки. Я использовал apache Axis для создания своих заглушек, и теперь у меня возникают проблемы с зависимостями в моих пакетах. По мере развертывания моих пакетов я получаю зависимости с зависимостями пакетов apache.

Я использую maven для своих сборок и использовал maven-bundle-plugin с целью bundleall для получения пакетов зависимостей, но все еще сталкиваюсь с проблемами с зависимостями пакетов. Я действительно хотел бы использовать osgi, поскольку подключаемая природа через пакеты - это именно то, что мне нужно, однако я трачу много времени на поиск зависимостей пакетов.

Есть ли какие-либо четкие примеры использования веб-службы SOAP из OSGi, включая способы разрешения зависимостей?


person broschb    schedule 22.07.2011    source источник


Ответы (2)


Чтобы облегчить себе жизнь, вы можете попробовать использовать fuse esb (apache servicemix) или karaf. Felix - это минимальный контейнер OSGi, тогда как Karaf - это Felix, многие из наиболее важных пакетов уже развернуты. Fuse (также называемый servicemix) - это караф с еще большим количеством комплектов. Fuse поставляется с cxf, поэтому вам не придется с ним связываться.

Если вы действительно предпочитаете использовать felix, опубликуйте конфигурацию плагина пакета maven, а также список ваших пакетов, работающих в felix. Я давно использую CXF в Felix / Karaf для обслуживания веб-сервисов JAX-RS, и это довольно мощное решение.

person Jon7    schedule 24.07.2011
comment
Спасибо за информацию, я много чего пробовал и вспомнил, что на самом деле мне пришлось использовать ось для генерации заглушек, поскольку используемые мной wsdls являются RPC / кодированными. Итак, у меня возникают проблемы с решением пакетов вокруг apache. Текущий пакет, который я пытаюсь решить, - это пакет org.apache.axiom.om - person broschb; 25.07.2011
comment
Хорошо, я переехал в Караф, и дела идут немного лучше. Я могу установить свой комплект. Однако, когда я действительно пытаюсь вызвать вызов веб-службы в активаторе пакета для тестирования, я получаю noClassDefFoundError. Ниже приведена трассировка стека, однако есть ли способ посмотреть, как загружается путь к классам для пакета? Или как лучше всего это отследить? У меня есть этот класс в комплекте, но он не загружается правильно. - person broschb; 26.07.2011
comment
Stacktrace java.lang.NoClassDefFoundError: javax / xml / stream / util / StreamReaderDelegate в java.lang.ClassLoader.defineClass1 (собственный метод) Вызвано: java.lang.ClassNotFoundException: javax.xml.stream.util.StreamRe not found by .apache.ws.commons.axiom.axiom-api [138] в org.apache.felix.framework.ModuleImpl.findClassOrResourceByDelegation (ModuleImpl.java:787) - person broschb; 26.07.2011
comment
В консоли Karaf вы можете использовать команду headers <bundle ID>, чтобы увидеть, что в манифесте указано, что пакет должен импортировать, и он отображается красным, если OSGi не может найти этот пакет. Как вы составляете список пакетов для импорта? Указываете ли вы это вручную в плагине maven-bundle-plugin или позволяете BND обрабатывать это? Обычно проблемы с NoClassDef возникают из-за того, что вы (или BND) не указали класс в своем манифесте. Команда заголовков должна дать вам представление о том, что происходит. - person Jon7; 27.07.2011
comment
Я проверил заголовки своего пакета и пакета axiom-api, который вызывает ошибку. Оба они показывают, что разрешают все зависимости. И есть установленный пакет, у которого была зависимость, но кажется, что в пути к классам есть какая-то ошибка с разрешением. Есть ли другие мысли о том, как это отследить? - person broschb; 01.08.2011
comment
Я получил эту работу, и в итоге я обернул исходные веб-службы, основанные на оси 1.x, которые я никогда не мог заставить работать в osgi env. и выставил ось 2.x через java-ws (CXF). Сейчас все отлично работает. - person broschb; 05.08.2011

Цель bundleall для maven-bundle-plugin будет генерировать пакеты для всех ваших зависимостей. Однако он не покажет вам порядок их установки для устранения зависимостей. Одна из реализаций OSGi, которая отлично справляется с зависимостями, - это веб-сервер Virgo от Eclipse Foundation. С помощью Virgo вы можете просто скопировать все пакеты, созданные с помощью bundleall goal, прямо в папку repository / usr, поместить свой сервис в папку подбора, и среда выполнения выполнит разрешение зависимостей за вас. Я успешно использовал этот процесс в прошлом.

В связи с этим, если у вас нет нескольких необычных зависимостей, вам следует изучить возможность добавления зависимостей из SrpingSource Enterprise Bundle Репозиторий.

person Ryan Gross    schedule 25.07.2011