java - OSGi 包更新后如何重新布线框架

标签 java osgi equinox osgi-bundle

我有一个基于 Equinox 的应用程序。我需要更新一个包并重新连接与更新后的包相对应的 OSGi 包。

我使用更新了包,

bundle.update(new FileInputStream(new File(filePath)));

我需要刷新受影响的 bundle 才能影响更新。

我该怎么做?...

最佳答案

BundleContext bcx = bundle.getBundleContext();
Bundle systemBundle = bcx.getBundle(0);

bundle.update(new FileInputStream(new File(filePath)));

FrameworkWiring frameworkWiring = systemBundle.adapt(FrameworkWiring.class);
frameworkWiring.refreshBundles(null);

请注意 refreshBundles 是一个异步函数调用。因此,如果你想在 bundle 刷新时捕获事件,你必须传递一个 FrameworkListener 作为第二个参数。

关于java - OSGi 包更新后如何重新布线框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23360914/

相关文章:

java - 是否可以在没有服务代理的情况下构建 SOA?这方面有什么好的例子吗?

eclipse - 运行 Eclipse 插件/更新镜像

java - NoClassDefFoundError 尽管有 OSGi 包

java - Logback 在 OSGi 容器中包含片段

java - Libgdx/Java创建/删除实体会创建Java日志错误

java - Android TurnBasedMultiplayer 与 exclusiveBitMask 自动匹配

java - 实时打印 Runtime.getRuntime().exec() 输出

java - ViewPager 中每个 ImageView 的 ID

java - 如何在运行时控制 OSGi 中的依赖注入(inject)

java - OSGi 找不到激活器