2017-08-07 199 views
0

为了避免我们有两个osgi bundle:bundleA和bundleB。在bundleB中,我们有一些texts.properties。所以,在bundleA我们做Osgi Bundle更新和ResourceBundle

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

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

  1. 现有'rb'会发生什么?它必须工作吗?
  2. 如果在新版本的bundleB出现后,我们使用与上述相同的代码 - 我们将在rb中看到texts.properties的新版本?或者我们需要为此做额外的操作?

回答

1

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