Spring Boot热部署jar和取消部署

时间:2019-02-03 23:29:22

标签: java spring spring-boot

很抱歉,这不是一个典型的stackoverflow问题,我不想修复某些代码,但我正在尝试为我的应用程序找到解决方案。

上下文: 我正在构建一个可以公开/使用自定义API(这些可以是REST或其他)的Spring Boot应用程序。 可以按照模板在应用程序外部构建和编译API连接器。

问题: 我需要一种方法来以编程方式加载在应用程序外部编译的代码,并在停机时间为0的情况下在我的应用程序内部运行它,我还需要能够取消部署不再使用的jar。

1 个答案:

答案 0 :(得分:1)

我已经使用OSGi来实现something,尽管它只涉及使打包在jar中的前端应用程序可用,而不是后端API。

首先,我创建了一个带有嵌入式OSGi运行时(特别是Apache Felix)的应用程序。这些运行时通常会监视本地目录以查找可以自动加载的jar文件。我使用自定义代码监视AWS S3存储桶,并在将新文件上传到存储桶时显式加载了它们。

我在应用程序中设置了侦听器,以了解何时运行时加载或卸载了实现我的特殊标记器接口的插件services,并在发生这些事件时对其进行了注册/注销。

当请求进入时,我将通过请求路径确定请求的目标插件,并从插件档案中加载所需的文件。