我想在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