Felix構成管理ライブラリを使用して、OSGiサービスの構成ファイルを読み取って適用しています。私が構成しているサービスの多くはサードパーティ(org.ops4j.pax.web.pax-web-jettyやorg.ops4j.pax.url.mvnなどBundleActivator
)であり、宣言型サービスではなく単純なサービスを使用しています。これらのサービスはそれぞれ2回初期化されることがわかりました。
- アクティベーション時に、彼らは呼び出します
ManagedService#updated(null)
、そして - 非常に短い間、Felixは非同期
ConfigurationManager.UpdateThread
で呼び出します。ManagedService#update(non-null)
構成を適用するためのこの遅延は嫌いです。固有の競合状態が原因で、不規則な障害が発生します。この問題を回避するために構成を同期的に適用できる代替のCM実装はありますか?または、Felixを同期させることはできますか?(ソースコードとManagedService javadocを調べると、いいえのように見えます。)