java - Java中模块的动态加载

标签 java deployment plugins

在 Java 中,我可以动态地将内容添加到类路径并加载类(“动态”意味着无需重新启动我的应用程序)。是否有一个已知的框架/库可以在不重启的情况下处理模块的动态加载/卸载?

通常的设置,特别是对于网络应用程序,是负载平衡器、多个应用程序实例以及逐步部署和重新启动新版本。我正在寻找其他东西 - 具有多个服务/插件的应用程序,可能是单实例桌面应用程序,其中禁用单个服务很便宜,但关闭或重新启动整个应用程序是不可行的。

我正在考虑典型的插件基础架构,其中可以在不重新启动应用程序的情况下升级或安装插件。我必须从头开始编程,还是已经有可用的东西? Spring 兼容和开源是一个优势,但不是必需的。

最佳答案

您可能会考虑在 OSGI framework 中运行您的 spring 应用程序.

我相信DMServer是一个基于模块的 Java 应用程序服务器,旨在运行企业 Java 应用程序和基于 Spring 的应用程序,基于 OSGI

您可以在此 Hello, OSGi, Part 2: Introduction to Spring Dynamic Modules 中找到更多详细信息文章,特别是如何使用 Spring DM 在运行的系统中动态安装、更新和卸载模块。


注意:当您谈到“无需重新启动应用程序即可升级或安装插件”时,OSGI是第一个想到的候选框架。

这一切都是关于将应用程序模块化为更小的包。
每个 bundle 都是一个紧耦合的、可动态加载的类、jar 和配置文件的集合,这些类、jar 和配置文件明确声明了它们的外部依赖性(如果有的话)。

关于java - Java中模块的动态加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/415733/

相关文章:

javascript - 无法将我的 JavaScript 加载到 WordPress 插件中

firefox - 如何从网页打印到标签打印机

java - 目录分隔符不应出现在库名称 : Macintosh HD/Users/sakkisetty/Documents/dll/FasExtend. dll 中

java - 将 JSON 请求中的字符串映射到请求 POJO 中的 Enum

amazon-web-services - AWS API网关需要手动部署吗?

c# - 如何将同一个应用程序部署到多个服务器

java - 如何解决 ORA-12516 错误?

java - JComboBox/JTextField 的每个单词在任何地方自动完成

docker - Azure App Service的最佳部署替代方案

java - maven插件组件注入(inject)null