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