我正在编写一个使用外部模块的服务器应用程序。我想使它们无需服务器重新启动即可升级。我怎么做?我已经找到了OSGi,但对于我的任务而言,它看起来非常复杂且庞大。
简单的* .jar文件是可以的,但是我想一旦将它们加载,就无法从VM卸载它们并即时替换为另一个版本。
您可以建议哪种方法?
似乎OSGi正是您所要的。它可能很复杂,但是有解决方法。通过使用SpringDM或类似的东西来处理运行时注册和使用服务的样板任务,可以减轻某些复杂性。注释驱动的服务注册和依赖注入确实减少了需要编写的代码量。
降低复杂性的另一种方法是将大量应用程序部署在单个捆绑包中,而仅将需要模块化的部分部署到自己的捆绑包中。这减少了您在运行时注册和使用其他捆绑软件中的服务的风险,并降低了部署的复杂性。与标准Java应用程序一样,在捆绑包中运行的代码可以使用同一捆绑包中的其他代码-无需与OSGi运行时进行交互。这种方法的反义是将您的应用程序分解为许多离散的捆绑包,这些捆绑包将定义明确的服务导出到系统中的其他捆绑包。尽管这是一种非常模块化的方法,但它确实带来了额外的管理所有捆绑软件的复杂性以及与OSGi运行时的更多交互。
我建议阅读“ OSGi in Action”一书,以了解这些问题并查看一些不错的示例。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句