用Java开发一个简单的插件模块化休息可达服务

时间:2015-11-11 08:56:23

标签: java api plugins spring-boot osgi

我想开发一个服务,公开一个rest API来上传插件,插件是本地可执行的,即服务器的其他类使用它们。

插件也是:

  • 该插件应该是一个通过REST API提交的jar文件,一旦经过验证,就可以通过另一种API方法查看元数据并执行。
  • 不是太复杂(它们都应至少包含一个扩展抽象类的类或接口的接口实现,即服务),但可能有自己的依赖。
  • API允许验证插件是否符合服务,并且它声明了JAR中包含的XML或JSON文件的一些附加信息。
  • 以Json形式提供一些必须通过API公开的元数据(版本,制作它,可以使用,可以处理哪些数据)。
  • 所有人都实现了一个算法来执行一些数据处理,所以他们都有类似execute()方法的东西。执行此方法的结果将被处理到另一个类,因此在API上公开它并不是非常重要。
  • 必须能够在运行时由其他服务器类上载和执行,因此无法重新启动

问题是我不知道从哪里开始,因为我已经在Spring-boot上开发了一些基本的API,因为它拥有我需要的所有东西来轻松开发REST API但是我读的更多如何动态加载模块(插件)越多,我看到Spring不支持这种东西,我不确定类加载器或服务加载器是否可以在该上下文中工作。

我发现了OSGi框架,但老实说我不知道​​改变整个技术堆栈会对我有所帮助所以我想确保它是正确的答案,如果是,那么找一些资源指出我是对的方向,例如一些实现类似内容的教程。

感谢您的任何建议。

2 个答案:

答案 0 :(得分:3)

结帐OSGi enRoute。它包括一个开发RESTful服务的模型:http://enroute.osgi.org/services/osgi.enroute.rest.api.html

答案 1 :(得分:2)

OSGi听起来像是你尝试做的最好的匹配。

您可以将所有内容安装为捆绑包,包括主应用程序。如今这比几年前的工作少得多,但仍然不容小觑。

另一个选择是启动一个嵌入式OSGi框架,您只需安装插件即可。这项工作较少,但您需要确切了解其工作原理。

因此,对于这两种情况,我建议从外部OSGi专家那里获得帮助,因为它可以大大加快转换速度并避免您选择作为初学者的许多错误路径。