《OSGI原理與最佳實踐》一書中已經給出了基本的方式,這裏在林昊的基礎上增添幾行代碼完成一個可用的例子:
1 首先建立幾個插件工程,並導出成插件包,這裏將導出的插件包統一放置到G://osgi_prj//system_bundle目錄下
2 建立java project,並寫一個帶main方法的類,用於啓動OSGI以及先前的插件
源碼:
3 運行便可以看到調用到了osgi的內部類方法
說明:osgi裏面的bundle是通過自己的classloader加載內部類,所以只能通過反射進入指定bundle獲取class,而不能將包導入調用工程中,這裏也可以看到findbyproperty方法只能返回不帶類型的List,如果換成List<Message>將會出錯,因爲調用工程與插件的class不一樣。