我正在尝试在 main 方法中运行 OSGi 框架(Equinox)。
每次启动框架时,当我打印 BundleContext.getBundles().length
时,它表示该框架仅安装了 1 个 Bundle(这肯定是系统包)。
当我安装第一个 bundle 时, bundle ID 将从上一个 session 继续。假设我上次 session 有 4 个 bundle (并且在停止系统 bundle 之前我已停止并卸载了所有 bundle ),则第一个 bundle ID 设置为 5。
现在,我想知道框架如何选择bundle ID?即使我已经卸载了所有 bundle ,框架为什么以及如何记住最后一个 session ?是因为 Bundle Cache 的原因吗?如果是的话,如何清除缓存(从 1 重新开始编号)?
最佳答案
框架在其管理的持久存储中的某个位置有最后使用的包 ID。这个商店看起来是一个框架实现细节。启动框架时,您可以指定 org.osgi.framework.storage.clean 框架配置属性。这将清除所有已安装的 bundle ,但我不确定它是否会重置上次使用的 bundle ID。
关于osgi - OSGi框架如何设置Bundle ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7521421/