我会尽力提供几种可能的解决方案。我确实花了一些时间为我正在进行的项目准备小型PoC,所以我们希望以下选项是相关的。
重要注意事项:定义一些扩展点,确定并找到可用的实现非常简单。有很多可用的解决方案,例如良好的和简单的一个 - JSPF
资源是Web应用程序的主要问题
OSGi的
OSGi的,是没有那么糟糕,并能有用。它似乎很沉重(有些实现很重),但这是标准化平台的价格。我会建议检查Apache Felix。它可以用于“轻量级”模式。顺便说一句,它包括Web控制台,其是建立为松散耦合基于插件的应用,可能是有帮助的:
一些实例Extending the Apache Felix Web Console
Web控制台可以通过注册的扩展OSGi服务的 接口javax.servlet.Servlet的服务属性 felix.webconsole.label设置为标签(URL中的最后一个段) 页面。相应的服务被称为Web控制台插件或简称为 插件。
您还可以检查eie-manager这是干净和简单的,并使用OSGi来管理插件。可能是你的一个很好的例子。
自定义插件框架
我建议检讨背后Jenkins/Hudson解决方案。我会说詹金斯插件系统是相当成熟和可靠的。可以作为一个很好的例子。
也请您查看Hudson Plugin Architecture
简单的解决方案
对于我的项目,我已经建立基于JSPF自定义依赖解析器插件抽象层。
优点:
缺点:
- 没有适当的插件管理可能会很慢(全类路径搜索)
- 提供了非常基本的功能
- 可能需要额外注意
我会建议使用JSPF只有当你真的需要一些简单,想控制一切。 JPF提供了很多有趣的功能开箱即用,例如:
插件可以“热注册”和 应用程序执行过程中甚至取消注册。更重要的是,已注册的插件可以在“即时”激活和停用 ,最大限度地减少运行时资源的使用情况 。
问题是JPF死了。
建议
请花一些时间与Apache Felix。它足够成熟,所以你的时间投资可能会收回很多。
我已经授予赏金,但问题仍然是音符关闭。 –