JNAVI项目之用classloader实现热部署

来源:互联网 发布:Java开发工程师 招聘 编辑:程序博客网 时间:2024/06/06 01:56

JNAVI项目是我们公司开发的用于大规模分布式服务框架,能提供http,tcp,udp请求服务,并提供了大量的高效率、高性能、池化的请求底层服务的接口的框架。其中之一的特点就是类似于tomcat,支持部署多个业务模块,每个业务模块支持热部署,其就是利用classload实现的。先简单看图。








整个项目分3层,第一层就是启动JNAVI的代码,即boot启动代码

第二层就是服务框架,提供tcp,udp,http服务

第三次就是各个业务模块的代码


整体上,第一层代码初始化serverclassload,并根据配置的主类通过serverclassload启动主类

第二层会启动多个第三层业务模块,每个业务模块分别初始化一个moduleclassload,并引用,通过接口的形式调用第三层相关代码。

第三层支持热部署,即第二层的框架代码会启动一个线程,会定期的去检查业务模块的相关配置是否变化,变化的话,就会重新初始化一个moduleclassload,并加重代码,之后,抛弃之前的moduleclassload,以此达到热部署的功能(使用新类,并卸载旧类)





0 0