我想在Java應用程序中實現動態插件功能。理想情況下:在Java中實現動態插件
- 該應用程序將定義一個接口
Plugin
與方法如getCapabilities()
。 - 插件將是JAR
pluginX.jar
,其中包含PluginXImpl
類實現Plugin
(也可能包括其他一些)。 - 用戶將
pluginX.jar
放在一個特殊的目錄中或設置一個指向它的配置參數。用戶不一定必須在其類路徑中包含pluginX.jar
。 - 應用程序會找到
PluginXImpl
(也許通過JAR清單,也許通過反射)並將其添加到註冊表中。 - 客戶端可以獲得
PluginXImpl
的實例,例如通過調用getPluginWithCapabilities("X")
等方法。用戶不一定必須知道插件的名稱。
我有一種感覺,我應該能夠做到這一點與peaberry,但我不能任何意義的文件。我已經投入了一些時間學習Guice,所以我的首選答案不會是「使用Spring Dynamic Modules」。
有人可以給我一個簡單的想法,如何去做這個使用Guice/peaberry,OSGi,或只是普通的Java?
Peaberry和Spring DM都是OSGi上的圖層。 OSGi似乎做了你想做的事情(概念上),但它會做'OSGi-way',並且不會映射到你的確切過程,所以建議谷歌的一些OSGi教程。 – SteveD 2010-01-20 21:41:19
OSGi看起來比peaberry複雜一百倍。任何鏈接到好的教程? – 2010-01-20 21:48:20