如何在OSGi配置上同步访问

时间:2014-10-24 07:10:06

标签: java osgi

我目前正在编写一项服务,它会更改ConfigurationAdmin提供的配置。

因为pid背后的配置可能会被其他一些服务更新,特别是在启动时,我有点担心同步。这是因为当时我的服务通过Configuration#update()更新配置,它期望它与调用ConfigurationAdmin#getConfiguration(String)时的配置相同。但它可能会在另一项服务之间的时间内发生变化 - 我想避免这种情况。

有什么想法吗?

编辑:这是用例 我想要做的是创建一个服务,为一组特定的pid设置默认配置。如果这样的pid有一个配置或有人设置它,那么我就不会做任何事情:

  1. 我从configadmin
  2. 获取配置
  3. 我把它的属性
  4. 如果没有相关的设置,我设置默认值并更新配置。
  5. 我只是害怕某种事情按顺序发生,而是异步地发生:

    1. (线程1)。我得到空配置,看到它为空并设置默认值
    2. (主题2)使用不需要默认值的属性更新配置
    3. (线程1)通过线程1更新和覆盖配置
    4. 因此我只想保证,当我检查配置为空时,没有人更新配置,然后设置默认设置。

1 个答案:

答案 0 :(得分:0)

您真的不应该让多方尝试管理相同的配置。听起来你真的需要多个配置,每个方管理一个。