使用Eclipse開發OSGi Bundle,及如何手動/自動載入到Apache Felix上。
開發環境:Eclipse-SDK-4.3
OSGi 版本:Apache felix 4.0.3
1. 首先建立一個新的project,「File → New → Project...」,之後選擇「Plug-in Development」中的「Plug-in Project」。
2. 設定Project,本教學專案取名為「HelloService」,並勾選「an OSGi Framework」,完成後繼續下一步。
3. 在Bundle中會有一個啟動類別,通常預設為「專案名稱.Activator」在此我們更改為「helloservice.HelloService」,再來不要直接按「Finish」,請按「Next」繼續設定專案。
4. 將「Create a plug-in using one of the templates」取消勾選,設定完成後按下「Finish」即可。
5. 開啟專案內的「Src → helloservice → HelloService.java」,程式中已經有預設好的框架,我們可以在「start」和「stop」方法中撰寫簡單的程式碼。
6. 在專案項目案右鍵,選擇「Export...」將檔案匯出成jar檔,並指定存放路徑為OSGi 的資料夾中,完成後按下「Finish」。
7. 上步驟結束後便會在OSGi 的專案內產生「plugins」資料夾,其中會有剛才匯出的jar檔。
8. 接下來要將HelloService Bundle install進OSGi Framework中,此動作有兩種方式,以下將分別介紹。
8-1. 透過指令方式手動安裝Bundle:
「g!」表示要輸入指令的地方。
安裝Bundle指令:install file:資料夾/檔名
此處的資料夾即為剛才產生的「plugins」,檔名就是匯入的jar檔,且檔名需要打完整的名稱,包含副檔名。
完成後便會顯示安裝好的Bundle ID,之後便可透過指令對該ID(Bundle)進行動作。
8-2. 將要啟動的Bundle加入「config.properties」檔案內,讓OSGi在啟動時可以自動啟動Bundle。
「config.properties」檔案的位置在「conf」資料夾中,我們需要做的是,找到該檔案中的「felix.auto.start.1=」並在後面接上「資料夾/檔名」,這樣便可以在啟動時自動載入Bundle,若要載入多個Bundle則在後面加上「;」號即可。
完成後啟動OSGi Framework,並輸入「lb」即可看到HelloService Bundle已經自動載入了。