CN102819438B - 一种热加载的方法、装置及信息系统 - Google Patents

一种热加载的方法、装置及信息系统 Download PDF

Info

Publication number
CN102819438B
CN102819438B CN201110151963.8A CN201110151963A CN102819438B CN 102819438 B CN102819438 B CN 102819438B CN 201110151963 A CN201110151963 A CN 201110151963A CN 102819438 B CN102819438 B CN 102819438B
Authority
CN
China
Prior art keywords
entity class
document
load
class
byte code
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201110151963.8A
Other languages
English (en)
Other versions
CN102819438A (zh
Inventor
曹振兴
吴郑平
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Kingdee Software China Co Ltd
Original Assignee
Kingdee Software China Co Ltd
Filing date
Publication date
Application filed by Kingdee Software China Co Ltd filed Critical Kingdee Software China Co Ltd
Priority to CN201110151963.8A priority Critical patent/CN102819438B/zh
Publication of CN102819438A publication Critical patent/CN102819438A/zh
Application granted granted Critical
Publication of CN102819438B publication Critical patent/CN102819438B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

本发明适用于计算机软件领域,提供了一种热加载的方法、装置及信息系统,所述方法包括下述步骤:在配置文件中配置需要动态加载的单据实体类;根据所述配置文件,判断当前操作单据是否存在需要加载的单据实体类;在所述单据存在需要加载的单据实体类时,通过当前类加载器创建一个新的实体类加载器,并使用所述实体类加载器加载当前最新的所述单据实体类的字节码文件,生成新的实体类实例。本发明实现了在不需要重启系统或者应用程序的情况下对实体类的热加载,有效的节省了热加载的响应时间,提高了热加载的效率。

Description

一种热加载的方法、装置及信息系统
技术领域
本发明属于计算机软件领域,尤其涉及一种热加载的方法、装置及系统。
背景技术
所谓热加载是指系统或者应用程序在升级或者打补丁后,不需要重启整个系统或者应用程序也能维持该系统或者应用程序当前的运行状态,在发挥其原有功能的情况下,也能执行新功能的过程。
现有技术支持模块级别或者应用级别的热加载,但由于模块级别或者应用级别热加载的粒度比较粗,导致热加载的过程耗时较长。而且在系统或者应用程序升级或者打补丁的过程中,经常需要对类的源文件进行修改,在涉及到类结构的改动时,仍需要重启系统或者应用程序,这样用户需要等待较长的时间(5-10分钟左右)才能看到系统或者应用程序升级或者打补丁完后的结果,热加载响应速度较慢、响应时间较长。
发明内容
本发明实施例的目的在于提供一种热加载的方法,旨在解决现有的热加载技术在涉及到类级别的加载时,仍需要重启对应系统或者应用程序,造成热加载响应速度较慢、时间较长的问题。
本发明实施例是这样实现的,一种热加载的方法,所述方法包括以下步骤:
在配置文件中配置需要动态加载的单据实体类;
根据所述配置文件,判断当前操作单据是否存在需要加载的单据实体类;
在所述单据存在需要加载的单据实体类时,通过当前类加载器创建一个新的实体类加载器,并使用所述实体类加载器加载当前最新的所述单据实体类的字节码文件,生成新的实体类实例。
本发明实施例的另一目的在于提供一种热加载的装置,所述装置包括:
配置单元,用于在配置文件中配置需要动态加载的单据实体类;
判断单元,用于根据所述配置文件,判断当前操作单据是否存在需要加载的单据实体类;
加载单元,用于在所述单据存在需要加载的单据实体类时,通过当前类加载器创建一个新的实体类加载器,并使用所述实体类加载器加载当前最新的所述单据实体类的字节码文件,生成新的实体类实例。
本发明实施例的再一目的在于提供一种包括所述热加载装置的信息系统。
在本发明实施例中,通过在配置文件中配置需要动态加载的单据实体类,根据所述配置文件,判断当前操作单据是否存在需要加载的单据实体类,在所述单据存在需要加载的单据实体类时,通过当前类加载器创建一个新的实体类加载器,并使用所述实体类加载器加载当前最新的所述单据实体类的字节码文件,生成新的实体类实例,实现了在不需要重启系统或者应用程序的情况下对实体类的热加载,有效的提高了热加载的响应速度,节省了热加载的响应时间,提高了热加载的效率。
附图说明
图1是本发明实施例一提供的热加载的方法的实现流程图;
图2是本发明实施例一提供的实体类热加载的具体实现流程图;
图3是本发明实施例二提供的热加载的装置的组成结构图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
一种热加载的方法,其特征在于,所述方法包括以下步骤:
在配置文件中配置需要动态加载的单据实体类;
根据所述配置文件,判断当前操作单据是否存在需要加载的单据实体类;
在所述单据存在需要加载的单据实体类时,通过当前类加载器创建一个新的实体类加载器,并使用所述实体类加载器加载当前最新的所述单据实体类的字节码文件,生成新的实体类实例。
一种热加载的装置,其特征在于,所述装置包括以下步骤:
配置单元,用于在配置文件中配置需要动态加载的单据实体类;
判断单元,用于根据所述配置文件,判断当前操作单据是否存在需要加载的单据实体类;
加载单元,用于在所述单据存在需要加载的单据实体类时,通过当前类加载器创建一个新的实体类加载器,并使用所述实体类加载器加载当前最新的所述单据实体类的字节码文件,生成新的实体类实例。
本发明实施例通过在配置文件中配置需要动态加载的单据实体类,根据所述配置文件,判断当前操作单据是否存在需要加载的单据实体类,在所述单据存在需要加载的单据实体类时,通过当前类加载器创建一个新的实体类加载器,并使用所述实体类加载器加载当前最新的所述单据实体类的字节码文件,生成新的实体类实例,实现了在不需要重启系统或者应用程序的情况下对实体类的热加载,有效的提高了热加载的响应速度,节省了热加载的响应时间,提高了热加载的效率。
为了说明本发明所述的技术方案,下面通过具体实施例来进行说明。
实施例一:
图1示出了本发明实施例一提供的热加载的方法的实现流程,该方法过程详述如下:
在步骤S101中,在配置文件中配置需要动态加载的单据实体类。
在本实施例中,所述动态加载是指根据实际需要(例如:系统或者应用程序升级或者打补丁等),在配置文件中增加需要动态加载的单据实体类。所述实体类包括但不限于无状态的JAVA类,所述无状态JAVA类包括但不限于Web插件类。通过在配置文件中配置需要动态加载的单据实体类,从而方便对其他单据中该单据实体类的加载。例如:某个应用程序在升级的过程中改动了一个单据窗口类,则将该单据窗口类加入到配置文件中,在操作某个单据时,判断该单据的单据实体类中是否存在单据窗口类,如果存在,则对所述单据窗口类进行加载。
在步骤S102中,根据所述配置文件,判断当前操作单据是否存在需要加载的单据实体类,如果判断结果为“是”,则执行步骤S103;如果判断结果为“否”,则执行步骤S104。
在步骤S103中,通过当前类加载器创建一个新的实体类加载器,并使用所述实体类加载器加载当前最新的所述单据实体类的字节码文件,生成新的实体类实例。
在本实施例中,在当前操作单据存在需要加载的单据实体类,当前类加载器会根据所述需要加载的单据实体类创建一个对应的实体类加载器,使用该实体类加载器加载当前最新的所述单据实体类的字节码文件,生成新的实体类实例。其中,所述类加载器包括但不限于JAVA类加载器,所述JAVA类加载器用来加载Java类至Java虚拟机中。Java虚拟机使用Java类的方式如下(不局限于此方式):Java源程序(.java文件)在经过Java编译器编译之后被转换成Java字节代码(.class文件)。类加载器负责读取Java字节代码,并转换成java.lang.Class类的一个实例,该实例用来表示一个Java类,通过该实例的newInstance()方法就可以创建出该类的一个对象。
在本实施例中,使用所述实体类加载器加载当前最新的所述单据实体类的字节码文件,生成新的实体类实例的具体过程如图2所示:
在步骤S201中,检测当前最新的所述单据实体类的字节码文件是否已载入,即检测所述实体类加载器的缓存中是否存在当前最新的所述单据实体类的字节码文件,如果判断结果为“是”,则执行步骤S206,如果判断结果为“否”,则执行步骤S202;
在本实施例中,为每个实体类分配一个实体类加载器,通过该实体类加载器来加载实体类的字节码文件。为了避免重复加载,在加载前需要检测实体类加载器的缓存中是否存在当前最新的所述单据实体类的字节码文件。其中,当前最新的所述单据实体类的字节码文件通过所述单据实体类的字节码文件的更新时间来判断。
在步骤S202中,通过所述实体类加载器加载当前最新的所述单据实体类的字节码文件;
在本实施例中,在检测到当前最新的所述单据实体类的字节码文件未被载入时,所述实体类加载器查找当前实体类中所述单据实体类最新的字节码文件,在查找到后,通过所述实体类加载器加载当前最新的所述单据实体类的字节码文件。
在步骤S203中,判断所述实体类加载器加载当前最新的所述单据实体类的字节码文件是否成功,如果判断结果为“是”,则执行步骤S206,如果判断结果为“否”,则执行步骤S204;
在步骤S204中,通过该实体类同类别的其他实体类加载当前最新的所述单据实体类的字节码文件;
在本实施例中,如果所述实体类加载器加载当前最新的所述单据实体类的字节码文件是不成功,说明所述实体类加载器未在当前实体类中查找到当前最新的所述单据实体类的字节码文件,则需要在该实体类同类别的其他实体类中查找,并通过同类别的其他实体类加载器加载查找到的当前最新的所述单据实体类的字节码文件。
在步骤S205中,判断该实体类同类别的其他实体类加载当前最新的所述单据实体类的字节码文件是否成功,如果判断结果为“是”,则执行步骤S206,如果判断结果为“否”,则执行步骤S207;
在步骤S206中,通过所述实体类加载器读取当前最新的所述单据实体类的字节码文件,并转换生成新的实体类实例;
在本实施例中,读取字节码文件以及转换生成新的实体类实例的过程可以采用现有技术实现,在此不再赘述。
在步骤S207中,抛出加载异常。
在本实施例中,如果在当前实体类以及当前实体类同类别的其他实体类中都为查找到当前最新的所述单据实体类,则说明该单据实体类不存在,抛出加载异常信息。
在步骤S104中,直接通过当前的类加载器将所述单据实体类转换成实体类实例。
在本实施例中,在所述单据不存在需要加载的单据实体类时,说明该单据的单据实体类没有修改,则直接通过当前的类加载器将所述单据实体类转换成实体类实例。其中,将实体类转换成新的实体类实例的过程可以采用现有技术实现,在此不再赘述。
在本发明实施例中,为每个实体类分配一个实体类加载器,并通过该实体类加载器查找当前实体类最新的字节码文件,在查找到当前最新的所述实体类的字节码文件时,通过该实体类加载器将当前最新的所述实体类的字节码文件转换成新的实体类实例,从而实现了在不需要重启系统或者应用程序的情况下对实体类的热加载,有效的提高了热加载的响应速度,节省了热加载的响应时间,提高了热加载的效率。
实施例二:
图2示出了本发明实施例二提供的热加载装置的组成结构,为了便于说明,仅示出了与本发明实施例相关的部分。
该热加载装置可以是运行于信息系统内的软件单元、硬件单元或者软硬件相结合的单元,也可以作为独立的挂件集成到信息系统中或者运行于信息系统的应用系统中。
该热加载装置包括配置单元31、判断单元32、加载单元33以及实体类直接生成单元34。其中,各单元的具体功能如下:
配置单元31,用于在配置文件中配置需要动态加载的单据实体类,其具体过程如上所述,在此不再赘述。
判断单元32,用于根据所述配置文件,判断当前操作单据是否存在需要加载的单据实体类,并在判断结果为“是”时,加载单元33通过当前类加载器创建一个新的实体类加载器,并使用所述实体类加载器加载当前最新的所述单据实体类的字节码文件,生成新的实体类实例;在判断结果为“否”时,实体类直接生成单元34直接通过当前的类加载器将所述单据实体类转换成实体类实例。其中,所述加载单元33还包括检测模块331、实体类生成模块332以及加载模块333。
检测模块331检测当前最新的所述单据实体类的字节码文件是否已载入,即检测所述实体类加载器的缓存中是否存在当前最新的所述单据实体类的字节码文件,并在检测到当前最新的所述单据实体类的字节码文件已载入,实体类生成模块332通过所述实体类加载器读取当前最新的所述单据实体类的字节码文件,并转换生成新的实体类实例;在检测到当前最新的所述单据实体类的字节码文件未被载入,加载模块333通过所述实体类加载器加载当前最新的所述单据实体类的字节码文件,如果该实体类加载器加载不成功,则通过该实体类同类别的其他实体类加载,如果加载还不成功,则抛出加载异常。
在本发明实施例中,通过在配置文件中配置需要动态加载的单据实体类,根据所述配置文件,判断当前操作单据是否存在需要加载的单据实体类,在所述单据存在需要加载的单据实体类时,通过当前类加载器创建一个新的实体类加载器,并使用所述实体类加载器加载当前最新的所述单据实体类的字节码文件,生成新的实体类实例,实现了在不需要重启系统或者应用程序的情况下对实体类的热加载,有效的提高了热加载的响应速度,节省了热加载的响应时间,提高了热加载的效率。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

Claims (7)

1.一种热加载的方法,其特征在于,所述方法包括以下步骤:
在配置文件中配置需要动态加载的单据实体类;
根据所述配置文件,判断当前操作单据是否存在需要加载的单据实体类;
在所述单据存在需要加载的单据实体类时,通过当前类加载器创建一个新的实体类加载器,并使用所述实体类加载器加载当前最新的所述单据实体类的字节码文件,生成新的实体类实例;
所述使用所述实体类加载器加载当前最新的所述单据实体类的字节码文件,生成新的实体类实例的具体步骤为:
a、检测当前最新的所述单据实体类的字节码文件是否已载入,即检测所述实体类加载器的缓存中是否存在当前最新的所述单据实体类的字节码文件;
b、如果检测到当前最新的所述单据实体类的字节码文件已载入,则通过所述实体类加载器读取当前最新的所述单据实体类的字节码文件,并转换生成新的实体类实例;
c、如果检测到当前最新的所述单据实体类的字节码文件未被载入,则通过所述实体类加载器加载当前最新的所述单据实体类的字节码文件,如果该实体类加载器加载不成功,则通过该实体类同类别的其他实体类加载当前最新的所述单据实体类的字节码文件,如果加载还不成功,则抛出加载异常。
2.如权利要求1所述的方法,其特征在于,所述方法还包括以下步骤:
在所述单据不存在需要加载的单据实体类时,直接通过当前的类加载器将所述单据实体类转换成实体类实例。
3.如权利要求1所述的方法,其特征在于,所述实体类为web插件类。
4.一种热加载的装置,其特征在于,所述装置包括:
配置单元,用于在配置文件中配置需要动态加载的单据实体类;
判断单元,用于根据所述配置文件,判断当前操作单据是否存在需要加载的单据实体类;
加载单元,用于在所述单据存在需要加载的单据实体类时,通过当前类加载器创建一个新的实体类加载器,并使用所述实体类加载器加载当前最新的所述单据实体类的字节码文件,生成新的实体类实例;
所述加载单元还包括:
检测模块,用于检测当前最新的所述单据实体类的字节码文件是否已载入,即检测所述实体类加载器的缓存中是否存在当前最新的所述单据实体类的字节码文件;
实体类生成模块,用于如果检测到当前最新的所述单据实体类的字节码文件已载入,则通过所述实体类加载器读取当前最新的所述单据实体类的字节码文件,并转换生成新的实体类实例;
加载模块,用于如果检测到当前最新的所述单据实体类的字节码文件未被载入,则通过所述实体类加载器加载当前最新的所述单据实体类的字节码文件,如果该实体类加载器加载不成功,则通过该实体类同类别的其他实体类加载当前最新的所述单据实体类的字节码文件,如果加载还不成功,则抛出加载异常。
5.如权利要求4所述的装置,其特征在于,所述装置还包括:
实体类直接生成单元,用于在所述单据不存在需要加载的单据实体类时,直接通过当前的类加载器将所述单据实体类转换成实体类实例。
6.如权利要求4所述的装置,其特征在于,所述实体类为为web插件类。
7.一种包括权利要求4至6任一项所述的热加载装置的信息系统。
CN201110151963.8A 2011-06-08 一种热加载的方法、装置及信息系统 Active CN102819438B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201110151963.8A CN102819438B (zh) 2011-06-08 一种热加载的方法、装置及信息系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201110151963.8A CN102819438B (zh) 2011-06-08 一种热加载的方法、装置及信息系统

Publications (2)

Publication Number Publication Date
CN102819438A CN102819438A (zh) 2012-12-12
CN102819438B true CN102819438B (zh) 2016-12-14

Family

ID=

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1932670A (zh) * 2005-09-12 2007-03-21 冲数据株式会社 图像形成器件及图像形成装置
CN101236503A (zh) * 2008-02-27 2008-08-06 鞠京佳 一种热部署实体类组件
CN101639777A (zh) * 2009-09-07 2010-02-03 李元 一种构件的即插即用方法、应用及其系统
US7721277B1 (en) * 2004-06-08 2010-05-18 Oracle America, Inc. Hot deployment of shared modules in an application server

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7721277B1 (en) * 2004-06-08 2010-05-18 Oracle America, Inc. Hot deployment of shared modules in an application server
CN1932670A (zh) * 2005-09-12 2007-03-21 冲数据株式会社 图像形成器件及图像形成装置
CN101236503A (zh) * 2008-02-27 2008-08-06 鞠京佳 一种热部署实体类组件
CN101639777A (zh) * 2009-09-07 2010-02-03 李元 一种构件的即插即用方法、应用及其系统

Similar Documents

Publication Publication Date Title
EP3314422B1 (en) Extending a virtual machine instruction set architecture
US7543285B2 (en) Method and system of adaptive dynamic compiler resolution
US6167535A (en) Object heap analysis techniques for discovering memory leaks and other run-time information
US9086899B2 (en) Loading and debugging method and debugging system thereof
CN105183592B (zh) 用于支持性能分析的方法和装置
KR20140079422A (ko) 컴퓨팅 디바이스들에 대한 동적 전력 최적화
KR101782995B1 (ko) 자바스크립트 코드 저장 및 최적화를 통한 웹 브라우징 방법 및 장치
RU2008105764A (ru) Архивирование данных в виртуальном прикладном окружении
CN103473059B (zh) 一种支持多种体系架构的通用操作系统
US9535672B2 (en) Selective compiling method, device, and corresponding computer program product
US20110067018A1 (en) Compiler program, compilation method, and computer system
US20160299746A1 (en) Auto-vectorization in just-in-time compilers for dynamically typed programming languages
EP3084598B1 (en) Execution guards in dynamic programming
US9098355B2 (en) Method and apparatus for substituting compiler built-in helper functions with machine instructions
EP2100225B1 (en) Method, system and computer program for identifying interpreted programs through class loading sequences
CN102819438B (zh) 一种热加载的方法、装置及信息系统
CN109933410A (zh) 一种基于虚拟化技术的虚拟指令下发方法及系统
Béra et al. Sista: Saving optimized code in snapshots for fast start-up
CN112052047A (zh) 一种指令处理方法、终端及存储介质
Pickett et al. Return value prediction in a Java virtual machine
CN100549958C (zh) 一种类文件装载方法和系统
US9135027B1 (en) Code generation and execution for dynamic programming languages
CN102508694B (zh) 一种虚拟机文件运行方法及系统
CN102819438A (zh) 一种热加载的方法、装置及信息系统
US20120240106A1 (en) Optional retargeting of library references

Legal Events

Date Code Title Description
PB01 Publication
SE01 Entry into force of request for substantive examination
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20211228

Address after: Room 136, building 2, No. 2038, Taihe Road, Baoshan District, Shanghai 201900

Patentee after: Shanghai Guanyi Cloud Computing Software Co.,Ltd.

Address before: 518057 High-tech Industrial Village W1-B4, Shennan Avenue, Nanshan District, Shenzhen City, Guangdong Province

Patentee before: Kingdee software (China) Co.,Ltd.

TR01 Transfer of patent right

Effective date of registration: 20221118

Address after: 518000 floor 1-8, building a, Kingdee Software Park, No.2, Keji South 12th Road, Nanshan District, Shenzhen City, Guangdong Province

Patentee after: Kingdee software (China) Co.,Ltd.

Address before: Room 136, building 2, No. 2038, Taihe Road, Baoshan District, Shanghai 201900

Patentee before: Shanghai Guanyi Cloud Computing Software Co.,Ltd.