У меня есть служба OSGi с двумя реализациями. Один для prod и один для тестирования.Профили OSGi, такие как профили пружин
Есть ли способ переключить их в разных envs через код? Что-то вроде Spring profiles
У меня есть служба OSGi с двумя реализациями. Один для prod и один для тестирования.Профили OSGi, такие как профили пружин
Есть ли способ переключить их в разных envs через код? Что-то вроде Spring profiles
Нет прямых совпадений с профилями. Что вы можете сделать, так это опубликовать обе службы с различными свойствами службы. Затем для потребителя услуг вы можете использовать фильтр, чтобы решить, какую службу использовать.
В декларативных услугах этот фильтр можно изменить во время выполнения, предоставив конфигурацию для вашего компонента. В коде вы устанавливаете фильтр по умолчанию, как «prod» ниже.
@Reference(target="(profile=prod)")
MyService myService;
В конфигурации для компонента, где вы инъекционная услугу вы можете добавить свойство менять этот фильтр:
myService.target=(profile=dev)
Еще более распространенным подходом является просто развертывать различные услуги для разработчика и прода , В вашем тесте вы развертываете фиктивную службу, а в prod вы развертываете реальный сервис. Преимущество такого подхода заключается в том, что он работает с любой картой DI в OSGi.
Как вы регистрируете свой сервис OSGi сейчас? Программный? –