2017-05-07 64 views
1

今天我遇到了一个情况,当我更新捆绑软件,但程序继续工作,因为没有任何代码的变化。一些阅读后,我明白我必须做的OSGi刷新 - 下面的代码(SO上找到):什么时候应该刷新osgi?

Bundle systemBundle = bundleContext.getBundle(0); 
FrameworkWiring frameworkWiring = systemBundle.adapt(FrameworkWiring.class); 
frameworkWiring.refreshBundles(null); 

所以我的问题 - 当我应该做的OSGi刷新?只有更新后?在每次更新捆绑包之后,或者我可以更新N捆绑包并在此之后进行刷新?

回答

1

当您希望OSGi重新初始化软件包之间的连线时,需要完成OSGi刷新。在升级/降级某些软件包版本后,通常需要这样做。

你会发现也有用:What do these OSGi commands really do?

或者我可以更新ñ束和后不刷新?

如果不深入细节,这是你的问题的答案。在实践中,我观察到一些OSGi采用不好的框架在刷新时可能导致ClassLoader内存泄漏,所以要小心。

相关问题