如何在OSGi包更新后执行重新连线框架

时间:2014-04-29 09:36:18

标签: java osgi equinox osgi-bundle

我有一个基于昼夜平分点的应用程序。我需要更新一个包并重新连接与更新的包相对应的OSGi包。

我使用

更新了这个包
bundle.update(new FileInputStream(new File(filePath)));

我需要刷新受影响的捆绑包才能使更新受到影响。

我该怎么做?...

1 个答案:

答案 0 :(得分:5)

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是一个异步函数调用。因此,如果要在刷新包时捕获事件,则必须将FrameworkListener作为第二个参数传递。