OSGi声明服务ConfigurationPolicy.REQUIRE等效于aries蓝图

时间:2015-02-11 22:57:54

标签: osgi blueprint-osgi

在声明性服务中,可以将组件(服务)配置策略设置为“REQUIRE”,以使其依赖于某个配置文件的存在。这意味着在配置管理中可以使用匹配的“pid”配置之前,不会创建该服务。

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

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

1 个答案:

答案 0 :(得分:0)

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

我的解决方案是

  1. 使用configurationPolicy=REQUIRE
  2. 创建虚拟声明式服务
  3. 在蓝图中向此虚拟服务声明<reference ...'/>(使蓝图等到我的虚拟服务启动。
  4. 通过这种方式,蓝图在相关配置存在之前不会完成启动。这感觉有点像黑客,并注册了无意义的服务。