Моя команда пытается разработать новую систему на основе OSGi, и теперь у нас более 50 комплектов, и их количество растет. Проблема в том, что между связками существует зависимость. Например, при запуске пакета A он зарегистрирует службу в OSGi, а при запуске пакета B он будет использовать эту службу. Поэтому мне нужен запуск пакета A раньше, чем пакета B. Чтобы это произошло, я установил начальный уровень пакета A меньше, чем пакет B.
Мы пытались использовать ServiceTracker, чтобы не устанавливать начальные уровни, но когда количество сервисов растет, становится трудно управлять и понимать всю систему.
Однако я нашел в Интернете эту статью: OSGi и начальные уровни. Я не уверен, что в нем есть два предложения:
- Порядок старта в пределах начального уровня не определен!
- Вообще, при работе со стартовыми уровнями никогда не зависеть от порядка старта. Думайте об уровнях запуска как о проблеме управления, а не о времени разработки.
Означает ли это, что стартовый уровень не будет определять порядок старта? Тогда когда мне его использовать?
Разумно ли использовать разные уровни запуска для управления зависимостями между пакетами OSGi?
Можно сделать все пакеты динамическим модулем (используйте ServiceTracker для отслеживания всех используемых им сервисов), но это требует больше времени и требует старших разработчиков, и систему становится трудно отлаживать.