org.osgi.framework.storage.clean=onFirstInit 在 Apache Felix OSGi 实现的上下文中是啥意思?

Posted

技术标签:

【中文标题】org.osgi.framework.storage.clean=onFirstInit 在 Apache Felix OSGi 实现的上下文中是啥意思?【英文标题】:What does org.osgi.framework.storage.clean=onFirstInit mean in context of the Apache Felix OSGi implementation?org.osgi.framework.storage.clean=onFirstInit 在 Apache Felix OSGi 实现的上下文中是什么意思? 【发布时间】:2014-12-05 22:16:47 【问题描述】:

我试图弄清楚 org.osgi.framework.storage.clean=onFirstInit 在 Felix 框架的上下文中的真正含义。

根据 OSGi 规范:

org.osgi.framework.storage: 文件系统中的有效文件路径 目录...框架可以随意使用它所看到的这个目录 fit,例如,完全擦除其中的所有文件和目录...

org.osgi.framework.storage.clean: 指定是否以及何时存储 应清洁框架区域。如果没有指定值, 框架存储区域不会被清理。

由于根据规范,框架可以随意使用此目录,因此不清楚当 OSGi 规范声明应该清理存储区域时是什么意思。对于每个 OSGi 实现,清理可能意味着不同的东西。

Apache Felix documentation 声明:

onFirstInit 在框架实例运行时刷新包缓存 首先初始化。

特定于 Felix 文档:

    “刷新捆绑缓存”是什么意思?刷新是否与删除存储目录然后从头开始重建相同?所以它与rm -rf felix-cache 相同,而 Felix 容器已关闭,以便在启动时重建缓存,就好像这是第一次启动容器一样? “首次初始化框架实例时”是什么意思?这是否意味着第一次框架仅在容器第一次启动时才被初始化?还是说每次重启容器时都会第一次初始化框架?

【问题讨论】:

【参考方案1】:

“刷新捆绑缓存”是什么意思?

表示删除org.osgi.framework.storage指定的目录

刷新与删除存储目录然后从头开始重建它是否相同?

是的

所以在 Felix 容器关闭时它与 rm -rf felix-cache 相同,以便在启动时重建缓存,就好像这是第一次启动容器一样?

是的

当它说“首次初始化框架实例时”是什么意思?

Bundles 可以被初始化多次。该语句表示该目录应该只在 JVM 启动后的第一次被删除,而不是在系统包被初始化的后续时间。

这是否意味着第一次框架只在容器第一次启动时才被初始化?还是说每次重启容器时都会第一次初始化框架?

表示每次重新启动容器时第一次初始化框架

【讨论】:

以上是关于org.osgi.framework.storage.clean=onFirstInit 在 Apache Felix OSGi 实现的上下文中是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章