2016-08-04 29 views
1

期間菲利克斯導出系統軟件包當我需要輸出一些系統的包我做的:OSGI:如何運行

final Map configMap = new HashMap(); 
configMap.put(Constants.FRAMEWORK_STORAGE_CLEAN, "onFirstInit"); 
configMap.put(Constants.FRAMEWORK_SYSTEMPACKAGES_EXTRA,"my packageshere"); 
felix = new Felix(configMap); 

但我怎麼能在運行時輸出一些包?例如,在工作的osgi框架中,我想安裝一些需要某些系統軟件包的軟件包,我在啓動felix時沒有導出這些軟件包。

回答

1

沒有辦法動態地做到這一點。而且我不確定我是否理解這個目的,因爲在開始構架時提前知道包。爲什麼不全部導出?

+0

假設你有可以下載擴展到自己的應用程序。該擴展名具有N個捆綁。一些軟件包需要一些額外的系統軟件包。你每次申請都會重新開始嗎?另一個例子 - 你在osgi上使用web容器並部署你的web應用程序。如果新的Web應用程序需要一些系統軟件包 - 你會停止所有其他的Web應用程序? –

+0

不,我只會導出所有包,因爲這是一個有限集合。 (除非你在代碼的框架一邊做一些類加載黑客?) –

+0

我明白你說什麼,也許這是唯一的解決方案。然而,這很奇怪,因爲如果bundle非常動態,那麼它們的環境必須具有動態屬性。 –