【发布时间】:2015-11-11 08:56:22
【问题描述】:
我想开发一个服务,该服务公开一个用于上传插件的 REST API,并且这些插件是本地可执行的,即来自服务器的其他类使用它们。
插件还有:
- 插件应该是一个 jar 文件,它通过 REST API 提交并经过验证,然后通过另一个 API 方法提供以查看元数据并执行。
- 不太复杂(它们都应该至少包含一个扩展抽象类的类或接口的接口实现,服务)但可以有自己的依赖关系。
- API 允许验证插件是否与服务兼容,并且它在 JAR 中包含的 XML 或 JSON 文件中声明了一些附加信息。
- 有一些必须通过 API 公开的元数据(版本、制作者、是否可用、可以处理哪些数据)以 Json 形式。
- 都实现了一种算法来执行一些数据处理,所以它们都有类似
execute()的方法。执行此方法的结果将处理给另一个类,因此在 API 上公开它并不完全重要。 - 必须能够在运行时由其他服务器类上传和执行,因此无法重新启动
问题是我不知道从哪里开始,因为我已经在 Spring-boot 上开发了一些基本 API,因为它具有轻松开发 REST API 所需的所有东西,但我阅读的更多关于如何动态加载模块(插件)越多,我发现 Spring 不支持这种事情,我不确定类加载器或服务加载器是否可以在该上下文中工作。
我发现了 OSGi 框架,但老实说,我不知道它改变整个技术堆栈是否会对我有所帮助,所以我想确保它是正确的答案,如果是,然后找到一些资源,让我正确方向,例如一些实现类似功能的教程。
感谢您的任何建议。
【问题讨论】:
标签: java api plugins spring-boot osgi