更改OSGi Configuration Admin服务的配置存储位置?

问题描述:

有没有办法更改OSGi Configuration Admin服务的配置存储位置?我希望将属性文件存在于另一个捆绑包中,以便它们在部署中的源控件&中存在,而不是在OSGi存储中。更改OSGi Configuration Admin服务的配置存储位置?

+0

ConfigAdmin如何持久存储数据取决于实现。你能更具体一点,你正在使用哪种OSGi实现? – akr 2010-07-22 22:07:31

+0

我正在使用Felix Config Admin实现。我注意到它可以设置数据存储位置,但它添加了我不关心的服务属性。 然后,我发生了Felix文件安装,我可以用它来配置我的捆绑属性文件。这就是我目前使用的。我希望能够使用Config Admin服务将更改推回通过文件安装加载的属性。 – oconnor0 2010-07-26 17:13:33

最后,我决定使用Apache Felix文件安装来更新Configuration Admin ManagedService的配置属性。这似乎工作得很好。

这是一个小问题,因为当文件更新时,新的配置属性被推送到托管服务,而不考虑它们是否是正确的值。这意味着在下次启动时,值仍然会很差&需要设置为默认值。

它应该现在工作。

配置管理员实现不能这样做,至少不能通过规范以便携方式。相反,您需要一个“管理代理”,通过API将配置数据推送到配置管理员中;它可以从它希望的任何来源派生出配置数据。

FileInstall是管理代理的一个非常简单的例子。如果它不完全符合你的要求,那么编写你自己的代码并不困难。

ManagedServices仍需要对传入配置数据进行验证并动态响应新的配置数据。 OSGi是一个动态平台,Config Admin旨在允许对正在运行的系统进行即时重新配置。