当前位置: 首页 > 面试题库 >

用Java动态加载模块

鞠宏恺
2023-03-14
问题内容

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

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

我正在考虑典型的插件基础结构,在其中可以升级或安装插件而无需重新启动应用程序。我必须从头开始编程,还是已经可用?春季兼容和开源是一个加号,但不是必需的。


问题答案:

您可能会考虑在 OSGI框架中 运行spring应用程序。

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

您可以在此Hello,OSGi,第2部分:Spring动态模块简介中找到更多详细信息,尤其是如何使用Spring
DM在正在运行的系统中动态安装,更新和卸载模块。

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

这都是关于将应用程序模块化成较小的捆绑包。
每个捆绑软件都是紧密耦合的,可动态加载的类,jar和配置文件的集合,这些文件明确声明了它们的外部依赖项 (如果有)。



 类似资料:
  • 问题内容: 我查找了语法并搜索了api,但仍然对该过程感到困惑。我还搜索了Stackoverflow。加载类并从中动态创建对象的正确方法是什么?换句话说,我希望用户指定要创建的对象类型,然后创建该类型的对象。我不需要菜单,因为我希望他们能够选择当前目录中的任何类。 问题答案: 假设该类具有无参数构造函数,则最简单的方法是- 参考-java.lang.Class

  • 问题内容: 我正在尝试动态加载我创建的模块。 现在这可以正常工作: 但是,如果我通过动态导入尝试相同的操作,它将失败。 提供的错误是: 有什么想法吗? 编辑:使用完整范围时(它的工作原理?): 这不会引发任何错误,但是,它不会加载索引模块,而是会加载“ neoform”模块。 “ struct”的结果是: 另外,作为附带的问题,我该如何在动态加载的模块中实例化一个类?(假设所有模块都包含一个通用的

  • 问题内容: 好的,我已经搜索了高低位,但是无法可靠地确定Webpack是否可行。 https://github.com/webpack/webpack/tree/master/examples/require.context 似乎表明可以将字符串传递给函数并加载模块… 但是我的尝试没有用:webpack.config.js server.js modules /模块中名为test.js的模块 但是

  • 我有一个包含一些项目(例如汽车)的列表,它是动态的,因此没有固定的长度。当我加载此列表时,它看起来像这样: 之后,我在ng-repeat循环中循环此列表并创建一些复选框,以便我可以选择项目: 现在我有一个用户对象。这个对象里面有一个数组“cars”,我想在其中推送所有选定的汽车,如果我取消选择它,请将其删除。我的对象看起来像这样: 所以当我选择一辆汽车时,它应该被推送到我的用户对象中的数组中,如果

  • 我目前正在编写一个需要在不同类型的设备上运行的应用程序。我的方法是制作一个“模块化”应用程序,可以根据需要操作的设备动态加载不同的类。 为了使应用程序易于扩展,我的目标是为其他模块(jar或.class文件)分配一个特定路径,使核心程序保持原样。当不同的客户需要不同的模块时(无需为每个客户编译不同的应用程序),这一点至关重要。 这些模块将实现一个公共接口,“核心”应用程序可以使用接口上定义的这些方

  • 问题内容: 我正在使用express在Node.js中做一个项目。这是我的目录结构: 该目录包含许多与API相关的JS文件。我需要做的是建立一个挂钩系统,每当从快速HTTP服务器请求一个API函数时,它就会执行相应的API处理程序中指定的任何操作。这可能令人困惑,但希望您能理解。 Larry通过POST发送请求以获取用户详细信息。 服务器查找以查找与该请求关联的功能。 服务器执行操作并将数据发送回