Существует несколько способов развертывания зависимых пакетов в контейнеры OSGi.Вот некоторые из них:
1 Хранилище пакетов Felix OBR
Сначала необходимо создать файл индекса XML для доступных пакетов, используя такой инструмент, как bindex.Если вы используете maven-bundle-plugin, то он автоматически поддерживает индекс OBR в ~ / .m2 / repository / repository.xml.
Загрузка индекса с использованием интерфейса командной строки OBR:
> obr:addUrl file:/Users/derek/.m2/repository/repository.xml
Затем попросите OBR развернуть целевой пакет с зависимостями, определенными из индекса OBR:
> obr:deploy com.paremus.posh.sshd
Target resource(s):
-------------------
Paremus Posh Ssh Daemon (1.0.23.SNAPSHOT)
Required resource(s):
---------------------
Paremus Command API (1.0.23.SNAPSHOT)
Optional resource(s):
---------------------
Paremus Config Admin Commands (1.0.23.SNAPSHOT)
Paremus OSGi & LDAP Types (1.0.23.SNAPSHOT)
2 Apache Karaf
Karaf поддерживает «функции», которые в основномсписки пакетов, необходимых для предоставления функции:
karaf@root> features:info obr
Description of obr 2.0.0 feature
----------------------------------------------------------------
Feature has no configuration
Feature has no dependencies.
Feature contains followed bundles:
mvn:org.apache.felix/org.apache.felix.bundlerepository/1.6.4
mvn:org.apache.karaf.shell/org.apache.karaf.shell.obr/2.0.0
mvn:org.apache.karaf.features/org.apache.karaf.features.obr/2.0.0
karaf@root> features:install obr
3 Eclipse Virgo
Дева использует планов для определения артефактов, составляющих приложение, и она может автоматическипредоставлять зависимости приложения, включая комплекты, планы, архивы планов (PAR) и конфигурации, как из локальных, так и из удаленных репозиториев.
4 Paremus Nimble
Nimble использует OBR (или его собственный расширенный) индексы репозитория для автоматического развертывания всех зависимых комплектов, необходимых для активации целевого комплекта (и удаления их при остановке целевого комплекта).Он также может обнаруживать другие зависимости, например, для комплекта WAB требуется веб-расширитель и автоматически устанавливать его в соответствии с настраиваемой политикой.
Nimble также можно настроить для запуска Glassfish, чтобы его функции были доступны для комплектовв контейнере Glassfish.
В приведенном ниже примере также показано, что поддержка ведения журнала автоматически устанавливается при активации sshd:
$ posh
________________________________________
Welcome to Paremus Nimble!
Type 'help' for help.
[denzil.0]% nim:add --dry-run com.paremus.posh.sshd@active
-- sorted parts to install --
4325 osgi.resolved.bundle/ch.qos.logback.core:0.9.22
-- start dependency loop --
5729 osgi.resolved.bundle/com.paremus.util.logman:1.0.23.SNAPSHOT
5727 osgi.active.bundle/com.paremus.util.logman:1.0.23.SNAPSHOT
3797 osgi.resolved.bundle/ch.qos.logback.classic:0.9.25.SNAPSHOT
3792 osgi.resolved.bundle/slf4j.api:1.6
-- end dependency loop --
436 osgi.resolved.bundle/org.apache.mina.core:2.0.0.RC1
6533 osgi.resolved.bundle/sshd-core:0.3
398 osgi.resolved.bundle/com.paremus.posh.sshd:1.0.23.SNAPSHOT
396 osgi.active.bundle/com.paremus.posh.sshd:1.0.23.SNAPSHOT
(отказ от ответственности: я являюсь разработчиком в Paremus)
5 Apache Felix Gogo
gogo - это новая стандартная оболочка командной строки RFC147.Он уже используется в Felix, Karaf, Nimble и скоро будет доступен в Glassfish.
Gogo позволяет запускать любые команды, которые вы можете вводить в интерактивном режиме, в виде сценария.Таким образом, вы можете сгенерировать список пакетов для установки и преобразовать его в сценарий или даже захватить установленные пакеты из рабочей конфигурации, чтобы их можно было заново создать с чистого начала.