0
我想在OSGI中實現功能切換,這意味着我想以編程方式啓動和停止包。以編程方式啓動/停止片段
對於插件,真的很容易:
Bundle plugin = //...
plugin.start();
plugin.stop();
對於片段它不是那麼容易的。停止根本不起作用,如果我使用uninstall()
該片段已經消失,並且我無法再次安裝它,因爲我不知道BundleContext#installBundle(...)
的正確位置(並且正在查看Bundle#getLocation()
,片段本身)。
我面臨的問題是我有一個片段有助於一些Eclipse擴展點。只要停止主機插件不會刪除這些服務(無論出於何種原因)。所以我需要手動停止這個片段(或者清除愚蠢的Eclipse高速緩存,以阻止應用程序的運行?)。
那麼如何在運行時安裝碎片?
是的。如果您需要以編程方式啓動和停止某個功能,則不應使用碎片來保存該功能。 –
問題是:如果我停止主機插件,該片段仍將提供其服務。 –
您必須解釋「services」意味着什麼,因爲任何由bundle發佈的OSGi服務將在該bundle停止時自動消失。也許你在談論一些擴展模式(它可以做與生命週期有關的任何事情,所以你必須看看它的文檔或代碼)? –