Как автоматически активировать зависимости пакета при активации пакета?
После просмотра зависимостей Роберта Данна от OSGi: рай и ад, я особенно заинтересован в следующем:
Если вы использовали распознаватель, который не знал
ACTIVE
связать зависимости, тогда вам придется управлять всем этим самостоятельно. С Nimble вы просто спрашиваете, что вам нужно, и пусть решатель позаботится обо всем остальном. Это ускоряет жизненный цикл разработки и избавляет от ненужных помех в ваших сценариях.
Как сказал Ричард, использование obr может разрешить зависимости времени разрешения. Тем не менее, я думаю, что если не сканировать источник комплекта, трудно разрешить зависимости активного времени (зависимости активного комплекта автоматически) .
Например, если пакет A использовал сервис, который был зарегистрирован в пакете B, используя BundleContext.register
Затем, при активации пакета A, как мы узнаем тот факт, что мы также должны активировать пакет B?
1 ответ
Предположение, лежащее в основе всего подхода, заключается в том, что пакеты будут предоставлять метаданные с указанием их требований и возможностей. Некоторая дополнительная информация может быть получена из других артефактов в комплекте, таких как файл web.xml или файл компонента декларативных сервисов.
Даже при наличии зависимостей на уровне кода нет способа обнаружить произвольную динамическую загрузку классов - метаданные необходимы.
Написание программы, которая могла бы определить все возможные возможности и требования пакета, было бы сложной проблемой статического анализа, и они, как правило, эквивалентны проблеме останова, то есть невозможны.