Как автоматически активировать зависимости пакета при активации пакета?

После просмотра зависимостей Роберта Данна от OSGi: рай и ад, я особенно заинтересован в следующем:

Если вы использовали распознаватель, который не знал ACTIVE связать зависимости, тогда вам придется управлять всем этим самостоятельно. С Nimble вы просто спрашиваете, что вам нужно, и пусть решатель позаботится обо всем остальном. Это ускоряет жизненный цикл разработки и избавляет от ненужных помех в ваших сценариях.

Как сказал Ричард, использование obr может разрешить зависимости времени разрешения. Тем не менее, я думаю, что если не сканировать источник комплекта, трудно разрешить зависимости активного времени (зависимости активного комплекта автоматически) .

Например, если пакет A использовал сервис, который был зарегистрирован в пакете B, используя BundleContext.register Затем, при активации пакета A, как мы узнаем тот факт, что мы также должны активировать пакет B?

1 ответ

Решение

Предположение, лежащее в основе всего подхода, заключается в том, что пакеты будут предоставлять метаданные с указанием их требований и возможностей. Некоторая дополнительная информация может быть получена из других артефактов в комплекте, таких как файл web.xml или файл компонента декларативных сервисов.

Даже при наличии зависимостей на уровне кода нет способа обнаружить произвольную динамическую загрузку классов - метаданные необходимы.

Написание программы, которая могла бы определить все возможные возможности и требования пакета, было бы сложной проблемой статического анализа, и они, как правило, эквивалентны проблеме останова, то есть невозможны.

Другие вопросы по тегам