java - Osgi Bundle 更新和 ResourceBundle

标签 java osgi resourcebundle

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

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

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

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

最佳答案

由于bundleA有对classFromBundleB的引用,除非bundleA被刷新,否则它将继续维护原始bundleB的classFromBundleB。由于 ResourceBundle 维护缓存,因此您将不断获得相同的 rb。因此,更新bundleB后,您需要刷新依赖于bundleB中的类的bundle。

关于java - Osgi Bundle 更新和 ResourceBundle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45544120/

相关文章:

java - 类加载器在加载资源包中的意义

java - 删除后销毁所有实例

java - 项目gradle插件的加载类路径应用于

maven - 带有 maven-bundle-plugin 的 OSGI JAR 包

java - 通过 Spring Framework 中的注释从 resourceBundle 获取本地化消息

maven - 为什么Maven在构建过程中不复制属性文件?

java - spring TransactionTemplate 和 SimpleJdbcTemplate 是线程安全的吗?

java - 从 Activity 中的另一个类调用方法返回 null

java - 如何创建 Restful 服务并将其部署到 OSGi 容器中?

java - 部署 bundle 时 Apache-karaf 容器的性能