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

文档序号:6425706阅读:126来源:国知局
专利名称:一种热加载的方法、装置及信息系统的制作方法
技术领域
本发明属于计算机软件领域,尤其涉及一种热加载的方法、装置及系统。
背景技术
所谓热加载是指系统或者应用程序在升级或者打补丁后,不需要重启整个系统或者应用程序也能维持该系统或者应用程序当前的运行状态,在发挥其原有功能的情况下,也能执行新功能的过程。现有技术支持模块级别或者应用级别的热加载,但由于模块级别或者应用级别热加载的粒度比较粗,导致热加载的过程耗时较长。而且在系统或者应用程序升级或者打补丁的过程中,经常需要对类的源文件进行修改,在涉及到类结构的改动时,仍需要重启系统或者应用程序,这样用户需要等待较长的时间(5-10分钟左右)才能看到系统或者应用程 序升级或者打补丁完后的结果,热加载响应速度较慢、响应时间较长。

发明内容
本发明实施例的目的在于提供一种热加载的方法,旨在解决现有的热加载技术在涉及到类级别的加载时,仍需要重启对应系统或者应用程序,造成热加载响应速度较慢、时间较长的问题。本发明实施例是这样实现的,一种热加载的方法,所述方法包括以下步骤在配置文件中配置需要动态加载的单据实体类;根据所述配置文件,判断当前操作单据是否存在需要加载的单据实体类;在所述单据存在需要加载的单据实体类时,通过当前类加载器创建一个新的实体类加载器,并使用所述实体类加载器加载当前最新的所述单据实体类的字节码文件,生成新的实体类实例。本发明实施例的另一目的在于提供一种热加载的装置,所述装置包括配置单元,用于在配置文件中配置需要动态加载的单据实体类;判断单元,用于根据所述配置文件,判断当前操作单据是否存在需要加载的单据实体类;加载单元,用于在所述单据存在需要加载的单据实体类时,通过当前类加载器创建一个新的实体类加载器,并使用所述实体类加载器加载当前最新的所述单据实体类的字节码文件,生成新的实体类实例。本发明实施例的再一目的在于提供一种包括所述热加载装置的信息系统。在本发明实施例中,通过在配置文件中配置需要动态加载的单据实体类,根据所述配置文件,判断当前操作单据是否存在需要加载的单据实体类,在所述单据存在需要加载的单据实体类时,通过当前类加载器创建一个新的实体类加载器,并使用所述实体类加载器加载当前最新的所述单据实体类的字节码文件,生成新的实体类实例,实现了在不需要重启系统或者应用程序的情况下对实体类的热加载,有效的提高了热加载的响应速度,节省了热加载的响应时间,提高了热加载的效率。


图I是本发明实施例一提供的热加载的方法的实现流程图;图2是本发明实施例一提供的实体类热加载的具体实现流程图;图3是本发明实施例二提供的热加载的装置的组成结构图。
具体实施例方式为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
一种热加载的方法,其特征在于,所述方法包括以下步骤在配置文件中配置需要动态加载的单据实体类;根据所述配置文件,判断当前操作单据是否存在需要加载的单据实体类;在所述单据存在需要加载的单据实体类时,通过当前类加载器创建一个新的实体类加载器,并使用所述实体类加载器加载当前最新的所述单据实体类的字节码文件,生成新的实体类实例。一种热加载的装置,其特征在于,所述装置包括以下步骤配置单元,用于在配置文件中配置需要动态加载的单据实体类;判断单元,用于根据所述配置文件,判断当前操作单据是否存在需要加载的单据实体类;加载单元,用于在所述单据存在需要加载的单据实体类时,通过当前类加载器创建一个新的实体类加载器,并使用所述实体类加载器加载当前最新的所述单据实体类的字节码文件,生成新的实体类实例。本发明实施例通过在配置文件中配置需要动态加载的单据实体类,根据所述配置文件,判断当前操作单据是否存在需要加载的单据实体类,在所述单据存在需要加载的单据实体类时,通过当前类加载器创建一个新的实体类加载器,并使用所述实体类加载器加载当前最新的所述单据实体类的字节码文件,生成新的实体类实例,实现了在不需要重启系统或者应用程序的情况下对实体类的热加载,有效的提高了热加载的响应速度,节省了热加载的响应时间,提高了热加载的效率。为了说明本发明所述的技术方案,下面通过具体实施例来进行说明。实施例一:图I示出了本发明实施例一提供的热加载的方法的实现流程,该方法过程详述如下在步骤SlOl中,在配置文件中配置需要动态加载的单据实体类。在本实施例中,所述动态加载是指根据实际需要(例如系统或者应用程序升级或者打补丁等),在配置文件中增加需要动态加载的单据实体类。所述实体类包括但不限于无状态的JAVA类,所述无状态JAVA类包括但不限于Web插件类。通过在配置文件中配置需要动态加载的单据实体类,从而方便对其他单据中该单据实体类的加载。例如某个应用程序在升级的过程中改动了一个单据窗口类,则将该单据窗口类加入到配置文件中,在操作某个单据时,判断该单据的单据实体类中是否存在单据窗口类,如果存在,则对所述单据窗口类进行加载。在步骤S102中,根据所述配置文件,判断当前操作单据是否存在需要加载的单据实体类,如果判断结果为“是”,则执行步骤S103 ;如果判断结果为“否”,则执行步骤S104。在步骤S103中,通过当前类加载器创建一个新的实体类加载器,并使用所述实体类加载器加载当前最新的所述单据实体类的字节码文件,生成新的实体类实例。在本实施例中,在当前操作单据存在需要加载的单据实体类,当前类加载器会根据所述需要加载的单据实体类创建一个对应的实体类加载器,使用该实体类加载器加载当前最新的所述单据实体类的字节码文件,生成新的实体类实例。其中,所述类加载器包括 但不限于JAVA类加载器,所述JAVA类加载器用来加载Java类至Java虚拟机中。Java虚拟机使用Java类的方式如下(不局限于此方式)Java源程序(.java文件)在经过Java编译器编译之后被转换成Java字节代码(.class文件)。类加载器负责读取Java字节代码,并转换成java. lang. Class类的一个实例,该实例用来表示一个Java类,通过该实例的newlnstance O方法就可以创建出该类的一个对象。在本实施例中,使用所述实体类加载器加载当前最新的所述单据实体类的字节码文件,生成新的实体类实例的具体过程如图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通过所述实体类加载器加载当前最新的所述单据实体类的字节码文件,如果该实体类加载器加载不成功,则通过该实体类同类别的其他实体类加载,如果加载还不成功,则抛出加载异常。在本发明实施例中,通过在配置文件中配置需要动态加载的单据实体类,根据所述配置文件,判断当前操作单据是否存在需要加载的单据实体类,在所述单据存在需要加载的单据实体类时,通过当前类加载器创建一个新的实体类加载器,并使用所述实体类加载器加载当前最新的所述单据实体类的字节码文件,生成新的实体类实例,实现了在不需要重启系统或者应用程序的情况下对实体类的热加载,有效的提高了热加载的响应速度,节省了热加载的响应时间,提高了热加载的效率。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包 含在本发明的保护范围之内。
权利要求
1.一种热加载的方法,其特征在于,所述方法包括以下步骤 在配置文件中配置需要动态加载的单据实体类; 根据所述配置文件,判断当前操作单据是否存在需要加载的单据实体类; 在所述单据存在需要加载的单据实体类时,通过当前类加载器创建一个新的实体类加载器,并使用所述实体类加载器加载当前最新的所述单据实体类的字节码文件,生成新的实体类实例。
2.如权利要求I所述的方法,其特征在于,所述方法还包括以下步骤 在所述单据不存在需要加载的单据实体类时,直接通过当前的类加载器将所述单据实体类转换成实体类实例。
3.如权利要求I所述的方法,其特征在于,所述实体类为web插件类。
4.如权利要求I所述的方法,其特征在于,所述使用所述实体类加载器加载当前最新的所述单据实体类的字节码文件,生成新的实体类实例的具体步骤为 a、检测当前最新的所述单据实体类的字节码文件是否已载入,即检测所述实体类加载器的缓存中是否存在当前最新的所述单据实体类的字节码文件; b、如果检测到当前最新的所述单据实体类的字节码文件已载入,则通过所述实体类加载器读取当前最新的所述单据实体类的字节码文件,并转换生成新的实体类实例; C、如果检测到当前最新的所述单据实体类的字节码文件未被载入,则通过所述实体类加载器加载当前最新的所述单据实体类的字节码文件,如果该实体类加载器加载不成功,则通过该实体类同类别的其他实体类加载当前最新的所述单据实体类的字节码文件,如果加载还不成功,则抛出加载异常。
5.一种热加载的装置,其特征在于,所述装置包括 配置单元,用于在配置文件中配置需要动态加载的单据实体类; 判断单元,用于根据所述配置文件,判断当前操作单据是否存在需要加载的单据实体类; 加载单元,用于在所述单据存在需要加载的单据实体类时,通过当前类加载器创建一个新的实体类加载器,并使用所述实体类加载器加载当前最新的所述单据实体类的字节码文件,生成新的实体类实例。
6.如权利要求5所述的装置,其特征在于,所述装置还包括 实体类直接生成单元,用于在所述单据不存在需要加载的单据实体类时,直接通过当前的类加载器将所述单据实体类转换成实体类实例。
7.如权利要求5所述的装置,其特征在于,所述实体类为为web插件类。
8.如权利要求5所述的装置,其特征在于,所述加载单元还包括 检测模块,用于检测当前最新的所述单据实体类的字节码文件是否已载入,即检测所述实体类加载器的缓存中是否存在当前最新的所述单据实体类的字节码文件; 实体类生成模块,用于如果检测到当前最新的所述单据实体类的字节码文件已载入,则通过所述实体类加载器读取当前最新的所述单据实体类的字节码文件,并转换生成新的实体类实例; 加载模块,用于如果检测到当前最新的所述单据实体类的字节码文件未被载入,则通过所述实体类加载器加载当前最新的所述单据实体类的字节码文件,如果该实体类加载器加载不成功,则通过该实体类同类别的其他实体类加载当前最新的所述单据实体类的字节码文件,如果加载还不成功,则抛出加载异常。
9.一种包括权利要求5至8任一项所述的热加载装置的信息系统。
全文摘要
本发明适用于计算机软件领域,提供了一种热加载的方法、装置及信息系统,所述方法包括下述步骤在配置文件中配置需要动态加载的单据实体类;根据所述配置文件,判断当前操作单据是否存在需要加载的单据实体类;在所述单据存在需要加载的单据实体类时,通过当前类加载器创建一个新的实体类加载器,并使用所述实体类加载器加载当前最新的所述单据实体类的字节码文件,生成新的实体类实例。本发明实现了在不需要重启系统或者应用程序的情况下对实体类的热加载,有效的节省了热加载的响应时间,提高了热加载的效率。
文档编号G06F9/445GK102819438SQ20111015196
公开日2012年12月12日 申请日期2011年6月8日 优先权日2011年6月8日
发明者曹振兴, 吴郑平 申请人:金蝶软件(中国)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1