标签: java spring spring-boot
很抱歉,这不是一个典型的stackoverflow问题,我不想修复某些代码,但我正在尝试为我的应用程序找到解决方案。
上下文: 我正在构建一个可以公开/使用自定义API(这些可以是REST或其他)的Spring Boot应用程序。 可以按照模板在应用程序外部构建和编译API连接器。
问题: 我需要一种方法来以编程方式加载在应用程序外部编译的代码,并在停机时间为0的情况下在我的应用程序内部运行它,我还需要能够取消部署不再使用的jar。
答案 0 :(得分:1)
我已经使用OSGi来实现something,尽管它只涉及使打包在jar中的前端应用程序可用,而不是后端API。
首先,我创建了一个带有嵌入式OSGi运行时(特别是Apache Felix)的应用程序。这些运行时通常会监视本地目录以查找可以自动加载的jar文件。我使用自定义代码监视AWS S3存储桶,并在将新文件上传到存储桶时显式加载了它们。
我在应用程序中设置了侦听器,以了解何时运行时加载或卸载了实现我的特殊标记器接口的插件services,并在发生这些事件时对其进行了注册/注销。
当请求进入时,我将通过请求路径确定请求的目标插件,并从插件档案中加载所需的文件。