Osgi Bundle 更新和 ResourceBundle

Osgi Bundle update and ResourceBundle

假设我们有两个 osgi 包:bundleA 和 bundleB。在 bundleB 中,我们有一些 texts.properties。所以,在 bundleA 中我们做

ResourceBundle rb= 
        ResourceBundle.getBundle("com/foo/texts",locale, classFromBundleB.getClassLoader());

现在,我们更新 bunldeB 或完全删除它并安装并启动包含新版本 texts.properties 的新版本 bundleB。还有两个问题:

  1. 现有 'rb' 会怎样?必须有效吗?
  2. 如果在新版本的 bundleB 出现后我们执行与上面相同的代码 - 我们会在 rb 中看到 texts.properties 的新版本吗?或者我们需要为此做额外的操作?

由于bundleA有对classFromBundleB的引用,除非bundleA被刷新,否则会从原来的bundleB继续维护classFromBundleB。而且由于 ResourceBundle 维护着一个缓存,你会一直得到相同的 rb。因此,在更新 bundleB 之后,您将需要刷新依赖于 bundleB.

的 类 的捆绑包