Osgi Bundle更新和ResourceBundle

时间:2017-08-07 09:54:07

标签: java osgi 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中看到吗?或者我们需要为此做其他操作?

1 个答案:

答案 0 :(得分:1)

由于bundleA引用了classFromBundleB,除非刷新bundleA,否则它将继续从原始bundleB维护classFromBundleB。而且由于ResourceBundle维护了一个缓存,你将继续获得相同的rb。因此,在更新bundleB之后,您将需要刷新依赖于bundleB中的类的包。