【问题标题】:Configure Equinox to modify the management of the "local bundle cache"配置Equinox修改“本地包缓存”的管理
【发布时间】:2023-03-18 00:45:01
【问题描述】:

关于上一个问题how let OSGi to reuse your configuration via Config Admin,我仍在尝试在 Equinox Framework 中解决这个问题。

Pavol Juhos 写道:

Equinox Config Admin (org.eclipse.equinox.cm) 将配置数据存储在框架提供的持久存储区域中。这恰好是 Equinox 默认的“本地包缓存”目录。

所以我阅读了这个主题,发现 Equinox 有几个 runtime options(以及其他东西 osgi.configuration.area)。

我想要更改配置,以便不会删除或清理本地包缓存,因此下次我将运行框架时,将使用最后输入的配置(对于任何包) .

【问题讨论】:

    标签: java configuration osgi equinox


    【解决方案1】:

    还有osgi.clean 属性。如果将此设置为 true,则 OSGi 容器必须在启动时删除现有的包缓存(和所有相关数据)并将包重新加载到运行时缓存中。如果您将此设置为 false,那么您的包缓存应该在重新启动后仍然存在。

    这在 Eclipse SDK Equinox 运行时选项中有记录。

    【讨论】:

    • 这对我有用。只需使用参数“-osgi.clean=false”启动运行配置 - 谢谢
    【解决方案2】:

    CM 并非设计为在您停止容器后保留数据。 如果你想这样做,你必须使用首选项服务。

    因此,您的应用程序在初始化时必须从您由 PS 管理的持久存储中获取数据并将其“传递”给 CM 才能正常工作。

    【讨论】:

      【解决方案3】:

      用于指定是否应在框架启动时清除捆绑缓存的 OSGi 标准属性是 org.osgi.framework.storage.clean

      org.osgi.framework.storage.clean - 确定包缓存是否被刷新。该值可以是“none”或“onFirstInit”,其中“none”不刷新包缓存,“onFirstInit”在首次初始化框架实例时刷新包缓存。默认值为“无”。

      这是一个相对较新的版本(事实上,它仍然是一个草稿,请在第 4.2.2 节下的R4.2 Draft 中找到它),但我猜它应该可以在最近的 Equinox 版本中使用。

      【讨论】:

      • 能否请您发布规范的链接?我没有找到与 Equinox 相关的属性。
      猜你喜欢
      • 2022-01-16
      • 1970-01-01
      • 2019-08-24
      • 1970-01-01
      • 1970-01-01
      • 2020-03-05
      • 1970-01-01
      • 2020-10-26
      • 1970-01-01
      相关资源
      最近更新 更多