首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Java中模块的动态加载

Java中模块的动态加载
EN

Stack Overflow用户
提问于 2009-01-06 07:37:13
回答 2查看 3.2K关注 0票数 5

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

通常的设置是负载均衡器,应用程序的几个实例,以及逐步部署和重启新版本。我正在寻找其他的东西-有几个服务/插件的应用程序,可能是单实例桌面应用程序,其中禁用单个服务的成本很低,但关闭或重新启动整个应用程序是不可行的。

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-01-06 07:49:57

您可以考虑在中运行spring应用程序。

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

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

注意:当您谈到“无需重启应用程序即可升级或安装插件”时,首先想到的就是。

这一切都是关于将应用程序模块化到更小的捆绑包中。

每个包都是一个紧密耦合的、可动态加载的类、jars和配置文件的集合,这些类、jars和配置文件显式地声明了它们的外部依赖(如果有的话)。

票数 10
EN

Stack Overflow用户

发布于 2009-01-06 08:00:46

也许最简单的方法是用自己的类加载器加载每个插件。然后丢弃类加载器并创建一个新的类加载器来重新加载插件。您会希望插件API中的init()和destroy()方法允许使用启动/关闭类型的功能。

这也有将插件相互隔离的优点。

URLClassLoader是你开始做这个的起点。一般的想法是,你提供一个XxxPlugin超类,任何插件的子类。以Applet为例,它本质上是一个GUI插件(或Midlet等)。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/415733

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档