【发布时间】:2011-01-07 11:16:35
【问题描述】:
我想在 Java 应用程序中实现动态插件功能。理想情况下:
- 应用程序将使用
getCapabilities()之类的方法定义一个接口Plugin。 - 插件将是一个 JAR
pluginX.jar,其中包含一个实现Plugin的类PluginXImpl(可能还有其他一些)。 - 用户将
pluginX.jar放在一个特殊的目录中或设置一个指向它的配置参数。用户不一定必须在其类路径中包含pluginX.jar。 - 应用程序会找到
PluginXImpl(可能通过 JAR 清单,也可能通过反射)并将其添加到注册表中。 - 客户端可以获得
PluginXImpl的实例,例如,通过调用类似getPluginWithCapabilities("X")的方法。用户不一定必须知道插件的名称。
我有一种感觉,我应该能够使用 peaberry 做到这一点,但我无法理解文档。我花了一些时间学习 Guice,所以我的首选答案不是“使用Spring Dynamic Modules”。
谁能给我一个简单的想法,告诉我如何使用 Guice/peaberry、OSGi 或纯 Java 来做这件事?
【问题讨论】:
-
Peaberry 和 Spring DM 都是 OSGi 之上的层。 OSGi 似乎(从概念上)做你想做的事,但它会以“OSGi 方式”来做,不会映射到你的确切过程,所以建议谷歌搜索一些 OSGi 教程。
-
OSGi 看起来比 peaberry 复杂一百倍。有没有好的教程链接?
标签: java plugins osgi guice peaberry