配置Equinox以修改“本地捆绑缓存”的管理

关于上一个问题, 如何让OSGi通过Config Admin重用您的配置 ,我仍然试图在Equinox框架中解决这个问题。

Pavol Juhos写道:

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

所以我读了这个主题,发现Equinox有几个运行时选项 (其中包括osgi.configuration.area)。

我想要的是更改配置,以便不会下载或清理本地捆绑缓存,因此下次我将运行Framework时,将使用最后输入的配置(对于任何捆绑)。

还有osgi.clean属性。 如果将其设置为true,则OSGi容器必须在启动时删除现有的捆绑缓存(以及所有相关数据),并将捆绑包重新加载到运行时缓存中。 如果将此值设置为false,则捆绑缓存应在重新启动后继续存在。

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

停止容器后,CM不会设计为持久保存数据。 如果要这样做,则必须使用“首选项服务”。

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

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

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

这是一个相对较新的(事实上,它仍然是一个草案,在第4.2.2节的R4.2草案中找到它),但它应该适用于最近的Equinox版本,我想。