一种Java软件热更新的方法和装置制造方法及图纸

技术编号:24798851 阅读:33 留言:0更新日期:2020-07-07 20:56
本发明专利技术公开了一种Java软件热更新的方法和装置,包括如下步骤:S1:应用部署,在Java运行虚拟机中部署应用框架,导入已包含所需组件库及其它运行资源包类库的应用运行包;S2:应用部署完成以后,增加新服务实例;S3:通过客户端测试,查看S2中的新服务实例是否生效;S4:更新S2中的服务实例;S5:通过客户端测试,查看S4中的服务实例是否更新;S6:卸载S4中的服务实例;S7:通过客户端测试,查看S6中的服务实例是否存在。本发明专利技术还公开了一种Java软件热更新的装置,包括数据栈模块、组件库模块、服务编排模块和资源装卸模块四大模块。

【技术实现步骤摘要】
一种Java软件热更新的方法和装置
本专利技术涉及服务应用
,具体来说,涉及一种Java软件热更新的方法和装置。
技术介绍
在持续交付的时代,重新部署一个新的版本只需要点击一下按钮,但在有的情况下,重新部署过程可能比较复杂,停机是不被允许的,为了使应用不中断持续提供应用,在不重启应用的前提下持续提供服务,又称热更新。JAVA热更新技术一直在不断的更新进步,目前涉及到的技术主要有三个,一是高可用,描述一个系统经过专门的设计,从而减少停工时间,而保持其服务的高度可用性;二是Java类加载器(JavaClassloader),是Java运行时环境(JavaRuntimeEnvironment)的一部分,负责动态加载Java类到Java虚拟机的内存空间中;三是应用服务系统,提供若干个服务的应用服务系统;每个服务都有独立的输入及输出。但是目前基于Java应用的服务通常由java来实现服务能力,服务能力的发布,需要在应用运行态时更新class文件,需要进行停启操作,而停启过程会导致应用服务中断,降低了系统的可用性。
技术实现思路
针对相关技术中的上述技术问题,本专利技术提出一种Java软件热更新的方法和装置,能够克服现有技术的上述不足。为实现上述技术目的,本专利技术的技术方案是这样实现的:一种Java软件热更新的方法,包括如下步骤:S1:应用部署,在Java运行虚拟机中部署应用框架,导入已包含所需组件库及其它运行资源包类库的应用运行包,在应用运行后,不再加载新的运行类库,此时的应用只有一个基础内核;S2:应用部署完成以后,增加新服务实例,通过在服务实例中调用2个组件,发布服务编排资源文件到应用资源目录;S3:通过客户端测试,查看S2中的新服务实例是否生效,若新服务实例未生效,则重新发布服务编排资源文件到应用资源目录,直至新服务实例生效;否则,继续下一步;S4:更新S2中的服务实例,通过调整调用组件的个数为3个,更新服务编排资源文件到应用资源目录;S5:通过客户端测试,查看S4中的服务实例是否更新,若服务实例未更新,则重新更新服务编排资源文件到应用资源目录,否则,继续下一步;S6:卸载S4中的服务实例,从应用资源目录删除服务实例的服务编排资源文件;S7:通过客户端测试,查看S6中的服务实例是否存在,若服务不存在,则重新从应用资源目录删除服务A的服务编排资源文件,否则忽略。进一步的,对于步骤S2和步骤S4,所述组件库中的组件均由javaclass实现,提供独立的输入及输出的功能。本专利技术还公开了一种Java软件热更新的装置,包括数据栈模块、组件库模块、服务编排模块和资源装卸模块四大模块;所述数据栈模块用于软件更新方法中,在接收数据请求时产生数据,在请求处理完成后清理数据;所述组件库模块根据应用场景需要进行选配组件,将组件预置到应用中,所述组件库模块中组件通过接口与所述数据栈模块连接,组件从数据栈中获取数据,组件处理完成后,将结果输出到数据栈;所述服务编排模块提供表达式来简化所述数据栈模块中值的存取,通过服务编排文件来表达服务处理流程、控制所述组件库模块中组件实例的执行顺序、设置所述组件库模块中各组件实例执行的依赖参数,实现业务场景的表达;所述资源装卸模块包括服务实例池,所有的服务实例集中存储在服务实例池中,在资源装卸模块接收到请求后,根据服务标记,从服务实例池中取出对应的服务实例,再通过该服务实例进行业务处理。进一步的,所述数据栈模块中的服务采用Map结构为数据栈,Map对象增减属性为动态增减。其中,所述Map数据栈中(“键”,值)的数据要求为,键为字符串,值为任意类型。进一步的,所述组件库模块中组件只与所述数据栈模块进行交互,组件与组件之间不生成直接关系。进一步的,所述服务编排模块包括顺序处理、条件处理、循环处理、Finally处理、子流程嵌套、事务处理功能。进一步的,所述资源装卸模块中服务实例采用键值MAP方式存储在服务实例池中,键为服务标记,值为服务实例。本专利技术的有益效果:本专利技术的Class类的实例化,基于springframework的bean管理机制实现,提供基础组件库及运行基核,组件及服务的业务处理由服务编排文件来定义,通过监听服务编排配置文件的更新,来触发类实例的加载及卸载,达到无停启的服务级热更新能力;适用于在线服务应用,可一定程度保持应用服务的高度可用,减少应用的停启维护的时间。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是根据本专利技术实施例所述的Java软件热更新的方法和装置的应用启动流程图;图2是根据本专利技术实施例所述的Java软件热更新的方法和装置的应用数据流程图;图3是根据本专利技术实施例所述的Java软件热更新的方法和装置的Ares热更新示意图。具体实施方式下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本专利技术保护的范围。如图1所示,根据本专利技术实施例所述的一种Java软件热更新的方法,包括如下步骤:S1:应用部署,在JAVA运行虚拟机中部署应用框架,导入已包含所需组件库及其它运行资源包类库的应用运行包,在应用运行后,不再加载新的运行类库,此时的应用只有一个基础内核;S2:应用部署完成以后,增加新服务实例,通过在服务实例中调用2个组件,发布服务编排资源文件到应用资源目录;S3:通过客户端测试,查看S2中的新服务实例是否生效,若新服务实例未生效,则重新发布服务编排资源文件到应用资源目录,直至新服务实例生效;否则,继续下一步;S4:更新S2中的服务实例,通过调整调用组件的个数为3个,更新服务编排资源文件到应用资源目录;S5:通过客户端测试,查看S4中的服务实例是否更新,若服务实例未更新,则重新更新服务编排资源文件到应用资源目录,否则,继续下一步;S6:卸载S4中的服务实例,从应用资源目录删除服务实例的服务编排资源文件;S7:通过客户端测试,查看S6中的服务实例是否存在,若服务不存在,则重新从应用资源目录删除服务A的服务编排资源文件,否则忽略。如图3所示,在一具体实施例中,步骤S1中,应用框架选用ARES框架。在一具体实施例中,对于步骤S2和步骤S4,所述组件库中的组件均由javaclass实现,提供独立的输入及输出的功能。如图2所示,本专利技术还公开了一种Java软件热更新的装置,包括数据栈模块、组件库模块、服务编排模块和资源装卸模块本文档来自技高网...

【技术保护点】
1.一种Java软件热更新的方法,其特征在于,包括如下步骤:/nS1:应用部署,在Java运行虚拟机中部署应用框架,导入已包含所需组件库及其它运行资源包类库的应用运行包,在应用运行后,不再加载新的运行类库,此时的应用只有一个基础内核;/nS2:应用部署完成以后,增加新服务实例,通过在服务实例中在组件库模块中调用2个组件,发布服务编排资源文件到应用资源目录;/nS3:通过客户端测试,查看S2中的新服务实例是否生效,若新服务实例未生效,则重新发布服务编排资源文件到应用资源目录,直至新服务实例生效;否则,继续下一步;/nS4:更新S2中的服务实例,通过调整在组件库模块中调用组件的个数为3个,更新服务编排资源文件到应用资源目录;/nS5:通过客户端测试,查看S4中的服务实例是否更新,若服务实例未更新,则重新更新服务编排资源文件到应用资源目录,否则,继续下一步;/nS6:卸载S4中的服务实例,从应用资源目录删除服务实例的服务编排资源文件;/nS7:通过客户端测试,查看S6中的服务实例是否存在,若服务不存在,则重新从应用资源目录删除服务 A的服务编排资源文件,否则忽略。/n

【技术特征摘要】
1.一种Java软件热更新的方法,其特征在于,包括如下步骤:
S1:应用部署,在Java运行虚拟机中部署应用框架,导入已包含所需组件库及其它运行资源包类库的应用运行包,在应用运行后,不再加载新的运行类库,此时的应用只有一个基础内核;
S2:应用部署完成以后,增加新服务实例,通过在服务实例中在组件库模块中调用2个组件,发布服务编排资源文件到应用资源目录;
S3:通过客户端测试,查看S2中的新服务实例是否生效,若新服务实例未生效,则重新发布服务编排资源文件到应用资源目录,直至新服务实例生效;否则,继续下一步;
S4:更新S2中的服务实例,通过调整在组件库模块中调用组件的个数为3个,更新服务编排资源文件到应用资源目录;
S5:通过客户端测试,查看S4中的服务实例是否更新,若服务实例未更新,则重新更新服务编排资源文件到应用资源目录,否则,继续下一步;
S6:卸载S4中的服务实例,从应用资源目录删除服务实例的服务编排资源文件;
S7:通过客户端测试,查看S6中的服务实例是否存在,若服务不存在,则重新从应用资源目录删除服务A的服务编排资源文件,否则忽略。


2.根据权利要求1所述的一种Java软件热更新的方法,其特征在于,对于步骤S2和步骤S4,所述组件库中的组件均由javaclass实现,提供独立的输入及输出的功能。


3.一种Java软件热更新的装置,其特征在于,包括数据栈模块、组件库模块、服务编排模块和资源装卸模块四大模块;
所述数据栈模块用于软件更新方法中,在接收数据请求时产生数据,在请求处理完成后清理数据;

【专利技术属性】
技术研发人员:陈益玲何本强
申请(专利权)人:北京东方国信科技股份有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1