簡體   English   中英

OSGI:從jar安裝時更新已安裝的捆綁軟件?

[英]Osgi: update already installed bundle when installing from jar?

我實現了一項功能,即我的osgi在啟動時或在接收新的捆綁包時以編程方式在文件系統上安裝表示為jar的捆綁包。 但是,當我收到一個時,它在啟動過程中已經安裝,由於沖突而崩潰。 如果發生沖突而不是通過編程安裝,是否有辦法(我不知道ID或名稱)?

BundleContext context = FrameworkUtil.getBundle(this.getClass()).getBundleContext();
Bundle bundle = context.getBundle("file:/Path.jar");

希望有人知道...

我在類似情況下的操作:

  • 我編寫了一個BundleTracker,將每個捆綁包保存在addBundle中的Map中,並在removeBudnle中將其刪除
  • 當我想以編程方式安裝捆綁軟件時,我檢查了是否存在具有相同符號名的捆綁軟件,如果確實存在,則我使用bundle.update(inputStream)方法代替了bundleContext.install(...)

如果要允許同一捆綁包的多個版本,則可以在更新或安裝之前也檢查捆綁包的版本。 在這種情況下,如果

  • 新捆綁包的位置是相同的(如果在首次安裝時使用正確的路徑)
  • 版本是一樣的
  • 捆綁包是單例捆綁包(版本不同無關緊要)

如果您關心位置並且位置已更改,請使用bundle.uninstall()和bundlecontext.install(...)代替update(inputstream),它們會重新安裝捆綁包。

最后,您應該調用refresh()以具有正確的包裝接線。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM