Java制造技术

技术编号:39669133 阅读:14 留言:0更新日期:2023-12-11 18:33
本发明专利技术提供一种

【技术实现步骤摘要】
Java代码热处理方法及装置、介质、设备


[0001]本专利技术涉及
Java

,尤其是涉及一种
Java
代码热处理方法及装置

介质

设备


技术介绍

[0002]Java
应用启动时,会传递给
Java
虚拟机一系列的类路径,在
Java
应用运行中,如果需要类,
Java
虚拟机便会按照类路径寻找并加载类
。Java
虚拟机加载类是通过类加载器完成的,具体采用了一种称为双亲委派的机制来寻找类

当一个类加载器收到了类加载请求,它首先把这个类委托给父类加载器去完成,每一层类加载都按此处理,因此所有的加载请求都应该传送到顶层的启动类加载器中,只有当父类加载器反馈自己无法完成该加载请求时,这个时候子加载器才会尝试自己去加载

类被加载后一般就不会再发生变化,但为了及时修复应用漏洞或快速迭代应用功能,不可避免会有在运行中修改
Java
代码的需求


技术实现思路

[0003]针对以上至少一个技术问题,本专利技术实施例提供一种
Java
代码热处理方法及装置

介质

设备

[0004]根据第一方面,本专利技术实施例提供的
Java
代码热处理方法,包括:
[0005]通过代码资源管理器对代码监听器进行初始化,以使初始化后的所述代码监听器能够对磁盘中存储的代码资源是否发生更改进行监听;其中,每一个代码资源具有一个唯一的
ID

[0006]当所述代码监听器监听到所述代码资源发生更改时,利用更改后的代码资源对所述磁盘上对应同一个
ID
的代码资源进行替换,调用代码资源仓库的更新接口,并向所述更新接口传入发生更改的代码资源的
ID
和更改后的代码资源,以使所述代码资源仓库将该
ID
对应的原代码资源替换为更改后的代码资源

[0007]根据第二方面,本专利技术实施例提供的
Java
代码热处理装置,包括:
[0008]更改监听模块,用于通过代码资源管理器对代码监听器进行初始化,以使初始化后的所述代码监听器能够对磁盘中存储的代码资源是否发生更改进行监听;其中,每一个代码资源具有一个唯一的
ID

[0009]资源替换模块,用于当所述代码监听器监听到所述代码资源发生更改时,利用更改后的代码资源对所述磁盘上对应同一个
ID
的代码资源进行替换,调用代码资源仓库的更新接口,并向所述更新接口传入发生更改的代码资源的
ID
和更改后的代码资源,以使所述代码资源仓库将该
ID
对应的原代码资源替换为更改后的代码资源

[0010]根据第三方面,本专利技术实施例提供计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行实现第一方面提供的方法

[0011]根据第四方面,本专利技术实施例提供的计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现第一方面提供的方法

[0012]本专利技术实施例提供的
Java
代码热处理方法及装置

介质

设备,通过代码资源管理器对代码监听器进行初始化,这样初始化后的所述代码监听器能够对磁盘中存储的代码资源是否发生更改进行监听,当所述代码监听器监听到所述代码资源发生更改时,利用更改后的代码资源对所述磁盘上对应同一个
ID
的代码资源进行替换,调用代码资源仓库的更新接口,并向所述更新接口传入发生更改的代码资源的
ID
和更改后的代码资源,进而所述代码资源仓库将该
ID
对应的原代码资源替换为更改后的代码资源,从而实现代码的更新

当存在修复应用漏洞或快速迭代应用的需求时,通过以上过程能够满足更新
Java
代码的需求

而且上述过程中,对代码的更新没有限制,可以适用于修改类字段

添加类方法

修改类方法的参数等

附图说明
[0013]图1为本专利技术一实施例中
Java
代码热处理方法的流程示意图;
[0014]图2为本专利技术一实施例中
Java
代码热更新的大致流程图;
[0015]图3为本专利技术一实施例中
Java
代码热加载的大致流程图

具体实施方式
[0016]第一方面,本专利技术实施例提供一种
Java
代码热处理方法

[0017]参见图1~3,该方法包括如下步骤
S110

S120

[0018]S110、
通过代码资源管理器对代码监听器进行初始化,以使初始化后的所述代码监听器能够对磁盘中存储的代码资源是否发生更改进行监听;其中,每一个代码资源具有一个唯一的
ID

[0019]其中,代码资源管理器的作用之一是对代码监听器进行初始化,初始化后的代码监听器会对磁盘上存储的代码资源进行监听,具体监听代码资源中的代码是否发生更改

[0020]其中,每一份代码资源均有一个
ID
,用来唯一标识该代码资源

[0021]S120、
当所述代码监听器监听到所述代码资源发生更改时,利用更改后的代码资源对所述磁盘上对应同一个
ID
的代码资源进行替换,调用代码资源仓库的更新接口,并向所述更新接口传入发生更改的代码资源的
ID
和更改后的代码资源,以使所述代码资源仓库将该
ID
对应的原代码资源替换为更改后的代码资源

[0022]其中,代码监听器的监听方式可以包括监听文件变更事件的方式或定时查询的方式

[0023]具体的,根据代码提供方式的不同,代码监听器可以采用多种方式进行监听,对于存储在磁盘上的代码资源可以采用监听文件变更事件的方式,对于存储在数据库中的代码资源可采用定时查询的方式,不一而足

[0024]当代码监听器监听到代码资源发生变更时,会将磁盘上对应同一个
ID
的代码资源替换为变更后的代码资源,而且调用代码资源仓库的更新接口,进而向该更新接口传入发生更改的代码资源的
ID
和更改后的代码资源,这样代码资源仓库就会将代码资源仓库中该
ID
对应的原代码资源替换为更改后的代码资源,至此实现对代码资源的本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.
一种
Java
代码热处理方法,其特征在于,包括:通过代码资源管理器对代码监听器进行初始化,以使初始化后的所述代码监听器能够对磁盘中存储的代码资源是否发生更改进行监听;其中,每一个代码资源具有一个唯一的
ID
;当所述代码监听器监听到所述代码资源发生更改时,利用更改后的代码资源对所述磁盘上对应同一个
ID
的代码资源进行替换,调用代码资源仓库的更新接口,并向所述更新接口传入发生更改的代码资源的
ID
和更改后的代码资源,以使所述代码资源仓库将该
ID
对应的原代码资源替换为更改后的代码资源
。2.
根据权利要求1所述的方法,其特征在于,还包括:在所述代码资源仓库接收到更改后的代码资源后,对更改后的代码资源进行初始化,得到该代码资源对应的类加载器;其中,所述类加载器具有优先加载当前层级的代码资源的功能;一个代码资源对应一个类加载器
。3.
根据权利要求2所述的方法,其特征在于,还包括:通过代码统一调用器接收用户发送来的类调用请求;其中,所述类调用请求中包括代码资源的
ID、
目标类的标识

所述目标类中的目标方法和所述目标方法的入参;通过所述代码统一调用器调用所述代码资源仓库的类加载接口,将所述类调用请求中的
ID
和目标类的标识传入所述类加载接口,以使所述代码资源仓库从该
ID
对应的代码资源中加载该标识对应的目标类,将加载到的目标类发送给所述代码统一调用器;通过所述代码统一调用器采用反射调用方法执行所述目标类中传入所述入参的目标方法
。4.
根据权利要求3所述的方法,其特征在于,所述代码资源仓库从该
ID
对应的代码资源中加载该标识对应的目标类,包括:根据该
ID
,判断所述代码资源仓库是否存储对应的代码资源;若无,则从
java
虚拟机中获取该
...

【专利技术属性】
技术研发人员:张伟庆时凯旋
申请(专利权)人:浪潮通用软件有限公司
类型:发明
国别省市:

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

1