OSGI外掛程式更新

2021-08-31 22:14:07 字數 989 閱讀 8452

osgi環境中 ,可以通過bundlecontext 來獲取環境中的bundle, 對bundle我們可以進行start,stop,uninstall,update; 安裝可以通過bundlecontext.install(路徑);來安裝; 但外掛程式沒有提供refresh的方法,在執行中的bundle通過update操作可能不會更新,安裝補丁後,也需要重新整理宿主,這樣通過程式來控制得特殊處理;實際上提供了refresh方法,但比較不好找而已;

首先在你的activator 中實現servicetrackercustomizer介面

public class activator implements bundleactivator, servicetrackercustomizer  

public static packageadmin getpackageadmininstance()

public void start(bundlecontext bundlecontext) throws exception

public void stop(bundlecontext bundlecontext) throws exception

public object addingservice(servicereference reference)

return packageadmin;

}public void modifiedservice(servicereference reference, object service)

public void removedservice(servicereference reference, object service)

}}

實現乙個***,這樣在程式中可以通過

activator.getpackageadmininstance().refreshpackages(new bundle );
來更新你的要更新的外掛程式

利用 OSGi 解決 Eclipse 外掛程式難題

本文介紹如何在 中為其他外掛程式編寫擴充套件,而不是用 eclipse v3.2 的動態擴充套件 api 建立對其他外掛程式的依賴性。可使用開放服務閘道器協議 open services gateway initiative,osgi 服務 api 和動態 api 完成所有這些任務甚至更多工。本文介...

外掛程式體系結構的經典 osgi

相信每個軟體開發者都有著這樣相同的經歷 從最初的凌亂編碼到函式過程的組織復用,再到現在以類 包 模組的封裝,對抽象和復用使用得越來越成熟有效。對軟體關注的層次也從單個演算法邏輯的實現到整個系統架構的搭建。本人也是一樣,工作學習之餘常常思考軟體設計 實現如何才能行之有效,這些年來雖然沒有大的進步,也比...

SAT外掛程式引用服務 發布osgi服務

osgi的服務層 service layer 為bundle之間的解耦合及服務引用提供的強大而又靈活的實現機制。通過bundleactivator控制項的生命週期,通過bundlecontext與其他元件和服務互動。但是,osgi服務層在提供強大的功能的同時,也給使用者造成了很大的困惑,比如,元件的...