发明名称 Java程序可动态更新化实现方法
摘要 一种计算机技术领域的Java程序可动态更新化实现方法,首先,对被动态更新程序中需要动态更新的类定义进行改造,增加更新支持方法,参数为类装载器,该方法用于实现对类对象的子对象逐个判断;对动态更新程序中更新类定义进行修改,增加更新方法,用于实现对该新类对象下的变量进行初始化,该方法的输入参数为类装载器和旧对象;再次,利用Java反射机制对被更新程序的部分方法调用、数据域存储以及对象建立进行修改,从而实现程序的运行恢复;最后,对主类增加更新支持方法并在主方法循环中增加更新检测点。本发明以避免需要采用停机、更新、重新启动的软件更新,避免由于停机中断服务造成的损失。
申请公布号 CN100489778C 申请公布日期 2009.05.20
申请号 CN200710170767.9 申请日期 2007.11.22
申请人 上海交通大学 发明人 张仕;黄林鹏;徐小辉;王德俊;伍建焜
分类号 G06F9/44(2006.01)I 主分类号 G06F9/44(2006.01)I
代理机构 上海交达专利事务所 代理人 王锡麟;王桂忠
主权项 1、一种Java程序可动态更新化实现方法,其特征在于,包括如下步骤:①对被动态更新程序中需要动态更新的类定义进行改造,增加更新支持方法,参数为类装载器,该方法用于实现对类对象的子对象逐个判断:对于每个子对象,如果需要更新,则首先临时存储旧对象,然后创建新对象给变量赋值,最后以旧对象和类装载器为参数调用其新对象的更新方法,否则调用原对象的更新支持方法,参数为类装载器;所述的原对象的更新支持方法,是指:相对于新程序中定义而言,原程序中的类定义实例是原对象,为了能够让原对象支持动态更新操作,需要向其定义中增加更新支持方法以实现状态转换和子对象替换功能;所述的新对象的更新方法,是指:对于旧程序中的类定义,用于替换旧类定义的类定义称为新类定义,对于旧对象是类的实例,其更新方法是对旧对象的状态转换而定义;②对动态更新程序中更新类定义进行修改,增加更新方法,用于实现对步骤①中所述的新对象下的变量进行初始化,该方法的输入参数为类装载器和旧对象,对每一个子对象做如下操作:如果子对象需要更新,那么给子对象赋值为新类定义的对象,并以旧对象的对应子对象和类装载器为参数调用新对象的更新方法,否则直接把原来对象赋值给新变量;③利用Java反射机制对被更新程序的部分方法调用、数据域存储以及对象建立进行修改,以便于程序能够选择具体的自定义类装载器实现对象建立功能,从而实现程序的运行恢复;④对主类增加更新支持方法并在主方法循环中增加更新检测点。
地址 200240上海市闵行区东川路800号