簡體   English   中英

OSGi框架可以同時啟動捆綁包嗎?

[英]Can OSGi frameworks start bundles concurrently?

我們有兩個捆綁軟件,它們都嵌入了相同的第三方庫的不同版本,我們必須將它們用於不同的配置。 不幸的是,該庫只能通過系統屬性進行配置。

因此,我們嘗試執行以下Activator類:

  1. 設置所需的系統屬性,
  2. 初始化庫,
  3. 取消設置以前的系統屬性。

如果OSGi框架同時啟動兩個捆綁包,則將不起作用。 是否允許OSGi框架實現? 這個解決方案安全嗎? 還有其他方法可以將相同的系統屬性針對不同的捆綁商品設置為不同的值嗎?

(如果可能,我們希望避免為這些捆綁包設置不同的開始級別。)

允許OSGi框架實現在給定的啟動級別內同時啟動包。 因此,您可以將捆綁軟件的啟動級別設置為不同的級別,以確保其中一個先於另一個啟動。

在Felix和Equinox中,捆綁包的安裝/解決/啟動/停止/卸載操作均在單個線程上進行。 我無法確定激活器是否在同一線程上運行,但我認為它們確實在運行。

如何創建包裝庫初始化的OSGi服務。 因此,您只需要做一次。 或者,服務可以同步初始化,因此請確保它不會同時發生。

將它們分開包裝是否有強烈要求? 您如何處理這些庫,將它們導出為Java包還是使用它們創建服務? 如果您可以將兩個庫放在一個同一個包中,則可以完全控制哪個先初始化,再初始化一秒。

順便說一句,如果您使用Export-Package將其導出到軟件包清單中,則請記住,即使軟件包處於已解決狀態(即已安裝但尚未啟動),其他軟件包也可以使用導出的軟件包。 因此,有可能有人甚至在創建Bundle Activator並完成初始化工作之前就調用了lib的方法。

暫無
暫無

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

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