我正在使用Felix 配置管理库来读取和应用 OSGi 服务的配置文件。我正在配置的许多服务都是第三方的(例如org.ops4j.pax.web.pax-web-jetty和org.ops4j.pax.url.mvn)并且使用简单的BundleActivator
而不是声明式服务。我发现这些服务每个都初始化了两次,因为
- 在激活时他们调用
ManagedService#updated(null)
,并且 - 不久之后,Felix异步
ConfigurationManager.UpdateThread
调用。ManagedService#update(non-null)
我讨厌这种延迟应用我的配置。由于固有的竞争条件,它会导致不稳定的故障。是否有可以同步应用配置以避免此问题的替代 CM 实现?或者我可以让 Felix 同步吗?(从对源代码和ManagedService javadoc的检查来看,似乎没有。)