Какая разница между функциями в Karaf и OBR

Я изучаю способы развертывания и обновления приложения OSGI (Karaf, в частности). Кажется, есть несколько вариантов. Один из них - использовать репозиторий BGDG OSGi, другой - использовать функции в Karaf, а третий - использовать Karaf Cave.

Я не совсем уверен, как эти варианты действительно разные. Кажется, все они делают то же самое. Являются ли они просто разными реализациями одной и той же функциональности? Может ли кто-нибудь объяснить объяснения или дать некоторые рекомендации?

Ответы

Ответ 1

Функции Karaf и OBR - это разные способы решения (одной) проблемы. Оба позволяют устанавливать пакеты OSGi в среду OSGi, но как они решают, какие пакеты для установки различны.

С функцией Karaf вы предоставляете файл (feature.xml, скажем), в котором явно перечислены URL-адреса для всех пакетов для этой функции. Они могут жить в файловой системе или в репозитории maven или где-либо еще, что может быть описано URL-адресом.

OBR, с другой стороны, разрабатывает, какие комплекты разрабатываются на основе требований и возможностей. Он разработает переходные зависимости того, что вы устанавливаете в качестве отправной точки, и убедитесь, что все они установлены. Обычно вы настраиваете один или несколько внешних репозиториев, поддерживающих формат OBR, а затем OBR-резольвер в вашей среде выполнения будет предоставлять пакеты из этих репозиториев. Таким образом, вы можете сказать: "Мне нужен пакет org.foo" или "Мне нужен сервис OSGi, который реализует org.bar", и создатель определит, какие пакеты наилучшим образом соответствуют вашим требованиям. OBR является более гибким и универсальным, чем функции Karaf, но может быть излишним, если вы просто устанавливаете четко определенный набор пакетов в инфраструктуру, которая уже загружена необходимой инфраструктурой. Это также не поможет вам, если пакеты, составляющие ваше приложение, не имеют зависимостей друг от друга - вам все равно нужно включить их в свой "начальный набор".

Различие становится немного размытым, потому что функции Karaf позволяют указывать диапазоны версий в URL-адресах maven, поэтому даже с помощью функции вы можете быть немного гибкими в том, что предоставляется. Функции Karaf также совместимы с OBR, поэтому вы можете написать свой файл определения функции с точки зрения требований OBR.

Я считаю, что Karaf Cave - это реализация OBR с некоторыми функциями. Таким образом, это сервер, а не новые "технологии", такие как функции или подготовка OBR.

- Enterprise OSGi в действии: http://www.manning.com/cummins