我想在OSGI中实现一个功能切换,这意味着我想以编程方式启动和停止捆绑包。
对于非常简单的插件:
Bundle plugin = //...
plugin.start();
plugin.stop();
对于片段来说,这并不容易。停止根本不起作用,如果我使用uninstall()
,则片段已经消失,而且我无法重新安装,因为我不知道{{{{}的正确位置1}}(并查看BundleContext#installBundle(...)
,片段本身也没有。)
我面临的问题是我有一个片段有助于某些Eclipse扩展点。只是停止主机插件将不会删除这些服务(无论出于何种原因)。所以我需要手动停止片段(或者清楚那个愚蠢的Eclipse缓存会一直阻塞应用程序?)。
那么如何在运行时安装片段呢?
答案 0 :(得分:2)
片段没有自己的生命周期。它们是主机包生命周期的一部分。这意味着无法独立于主机启动/停止它们。
如果您需要更多关于包,片段和生命周期的背景知识,我建议您阅读OSGi规范,该规范可以从http://osgi.org/网站下载。