我正在使用OSGI聲明式服務。使用相同的文件安裝兩個軟件包
在我的Java應用程序中,我啓動了Apache Felix,並安裝並啓動了一些軟件包。
使用相同的文件路徑安裝了兩個軟件包。一旦包開始,它應該顯示一個'你好'的消息。
當我安裝並啓動第一包:
Bundle bundle1 = context.installBundle("file:C://Users//bundles//myBundle.jar");
bundle1.start();
這顯示「您好」在控制檯中。
然而,當我安裝第二束(具有作爲第一束同一文件路徑)
Bundle bundle2= context.installBundle("file:C://Users//bundles//myBundle.jar");
bundle2.start();
我看不出有任何輸出。這意味着第二個軟件包的安裝和/或啓動被忽略。
我需要一種方法來安裝和啓動具有相同文件路徑的兩個不同的捆綁包,當我停止其中一個捆綁包時,另一個應該保持ACTIVE。我怎麼可能做到這一點?謝謝。
我想到的用例:假設我有兩個用戶,並且都想使用相同的功能(包)。如果其中一人決定停止捆綁功能,而另一人想保留它,會怎麼樣?
有沒有更好的方法來實現這一目標?謝謝。
假設我有兩個用戶。兩人都選擇了相同的功能,但後來,有人決定停止該功能。 (這裏的功能是一個包)。這不是一個用例嗎? –
取決於功能的含義。我認爲一個包包含了一個功能的實現。通過多次選擇該特徵,這意味着捆綁中的類被多次實例化。例如。您可以創建基於配置工廠的DS組件。如果用戶創建新配置,則該組件將使用該配置實例化。 –
您是否在談論ComponentFactory?你能提供一個例子,希望有一個小代碼嗎? –