OSGi Declarative Services ConfigurationPolicy.REQUIRE在aris蓝图



在声明性服务中,可以将组件(服务)配置策略设置为"REQUIRE",使其依赖于某个配置文件的存在。这意味着只有在configadmin中提供了具有匹配"pid"的配置之后,才会创建服务。

蓝图中有类似的解决方案吗?

我尝试过托管服务工厂,但由于我只需要一个服务实例,我不知道如何确保工厂只创建一个实例。

我自己一直在寻找这个问题的答案,除了这个(非常古老的)问题,什么也没找到!)。

我的解决方案是

  1. 使用configurationPolicy=REQUIRE创建伪声明性服务
  2. 向blueprint中的这个虚拟服务声明一个<reference ...'/>(使blueprint等待我的虚拟服务启动

通过这种方式,蓝图在相关配置存在之前不会完成启动。这感觉有点像黑客,注册了一项毫无意义的服务。

最新更新