gpt4 book ai didi

java - Java 中可动态加载和卸载的应用程序模块 - 如何实现?

转载 作者:搜寻专家 更新时间:2023-11-01 01:47:27 25 4
gpt4 key购买 nike

我正在编写一个使用外部模块的服务器应用程序。我想让它们无需重启服务器即可升级。我怎么做?我找到了 OSGi但对于我的任务来说它看起来非常复杂和庞大。

简单的 *.jar 文件没问题,但我想一旦它们被加载,我就无法从 VM 中卸载它们并即时替换为另一个版本。

您有什么建议?

最佳答案

看来 OSGi 正是您所要求的。它可能很复杂,但有一些方法可以解决这个问题。通过使用 SpringDM 或类似的东西来处理在运行时注册和使用服务的样板任务,可以减轻一些复杂性。注解驱动的服务注册和依赖注入(inject)确实减少了需要编写的代码量。

另一种降低复杂性的方法是将大部分应用程序部署在一个 bundle 中,并且只将需要模块化的部分部署到它们自己的 bundle 中。这减少了您在运行时注册和使用来自其他 bundle 的服务的风险,并降低了部署的复杂性。在一个包中运行的代码可以使用同一个包中的其他代码,就像在标准 Java 应用程序中一样——无需与 OSGi 运行时交互。这种方法的反面是将您的应用程序分解为许多离散的 bundle ,这些 bundle 将定义明确的服务导出到系统中的其他 bundle 。虽然这是一种非常模块化的方法,但它确实带来了管理所有这些 bundle 的额外复杂性以及与 OSGi 运行时的更多交互。

我建议您阅读“OSGi 实战”一书以了解问题并查看一些不错的示例。

关于java - Java 中可动态加载和卸载的应用程序模块 - 如何实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5486903/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com