Может ли OSGi устанавливать/развертывать пакеты, размещенные на URL-адресе?

Мне интересно, могу ли я настроить контейнер OSGi, такой как Karaf (или любой другой популярный), для загрузки пакетов ( .BNDs) из удаленного репозитория, размещенного на другом компьютере, с помощью любого сетевого механизма (RMI, HTTP, URLClassLoader и т. д.)?

В идеале я мог бы в любое время развернуть новые версии своих пакетов в этом удаленном репозитории и каким-то образом заставить контейнер OSGi «загружать» (устанавливать/развертывать) удаленные пакеты и развертывать их в горячем режиме поверх более старых версий тот самый пучок.

Это возможно? Если да, то как? Заранее спасибо!


person Community    schedule 16.09.2013    source источник


Ответы (3)


OSGi имеет API для управления платформами OSGi в BundleContext, который получает каждый активатор пакета. Этот API позволяет вам устанавливать/обновлять пакеты через URL или InputStream.

Поскольку это стандартизированный API, многие люди создают пакеты, которые обеспечивают политику для этого процесса развертывания. Архетипическим является Apache FileInstall, он просматривает каталог и автоматически устанавливает каждый пакет, найденный в этом каталоге, и удаляет пакет, когда он исчез. Это хорошо работает, например, с Dropbox. Он также поддерживает настройку через службу Configuration Admin. С другой стороны спектра вы найдете Apache Ace, который предоставляет систему удаленного управления.

Чтобы найти лучшее решение, попробуйте заручиться требованиями, которые у вас есть. Одна или две системы или 1 миллион? Локальный или удаленный по медленным линиям?

Одно можно сказать наверняка: вы найдете какой-нибудь проект или провайдера, способного предоставить вам пакет OSGi, который реализует желаемую политику управления.

person Peter Kriens    schedule 16.09.2013
comment
Спасибо @Peter Kriens (+1) - думаю, мне нравится решение Apache FileInstall. Но как это сделать: установить контейнер OSGi и FileInstall на один и тот же сервер и настроить FileInstall для мониторинга/просмотра удаленного каталога URL и для развертывания пакетов, сброшенных в этот удаленный каталог, в локальный контейнер OSGi? Или мне настроить FileInstall на одном сервере и настроить его для развертывания пакетов в контейнере OSGi на удаленном сервере? Еще раз спасибо! - person ; 16.09.2013
comment
FileInstall устанавливается как пакет в OSGi Framework. Так это на том же сервере. Он отслеживает каталог файловой системы. Для того, чтобы пакеты приходили откуда-то удаленно, вам нужно использовать его с чем-то вроде Dropbox, или BitTorrent Sync, или NFS и т. д. - person Neil Bartlett; 17.09.2013
comment
FileInstall имеет довольно хорошую документацию: felix.apache.org/site/apache- felix-file-install.html - person Neil Bartlett; 17.09.2013

Мы используем Apache Felix и поддерживаем репозиторий OBR. После настройки вы можете развернуть новые версии из оболочки OSGi. Это требует, чтобы вы вручную вошли в систему и ввели команду, например deploy com.example.foo.

В качестве альтернативы вы можете установить напрямую с URL-адресов, например install http://example.com/bundles/bundle.jar.

Ваше последнее требование (автоматическое развертывание) сложнее. Возможно, вы могли бы включить удаленную оболочку в своем контейнере OSGi и как часть вашей сборки отправить команды через telnet.

person merlijn    schedule 16.09.2013
comment
Спасибо @merlijn (+1) - однако я немного запутался. Сначала вы упомянули, что можно установить пакет напрямую из URL-адреса, но затем вы продолжаете говорить, что автоматическое развертывание сложнее. Чем отличаются эти две концепции (установка и автоматическое развертывание)? Разве установка пакета не развернет его? Еще раз спасибо! - person ; 16.09.2013
comment
Возможно, я неправильно понял эту часть вопроса. Развертывание нового пакета в нашей установке требует 2 шагов: 1. Установка его в репозиторий obr. 2. Войдите в контейнер OSGi и запустите команду развертывания. Мы еще не автоматизировали второй шаг, но это не является для нас насущной проблемой. - person merlijn; 16.09.2013

Я рекомендую взглянуть на подготовку Karaf в документации для подготовка. Вы можете развертывать пакеты с URL-адресами maven, http или ссылками на файлы. Или вы можете развернуть свой набор пакетов либо как определение функции (которое загружает все необходимые и используемые пакеты из репозитория maven), либо путем развертывания файла kar.

person Achim Nierbeck    schedule 16.09.2013