一种动态加载系统和方法

文档序号:7710043阅读:162来源:国知局
专利名称:一种动态加载系统和方法
技术领域
本发明涉及一种动态加载系统和方法,尤其是涉及一种用于实现在线系统的程序 动态加载的系统和方法。
背景技术
在生产系统上线后,经常出现部分功能模块进行变更调整。当前主要采用Mruts 2这种文件上传技术来解决如何升级相应程序的问题。Struts 2 ^ Commons FileUpload f 牛±#。 Commons FileUpload
HTTP的数据保存到临时文件夹,然后Mruts使用fiIeUpload拦截器将文件绑定到Action 的实例中。从而我们就能够以本地文件方式的操作浏览器上传的文件。当时当前这种升级时主要采用暂停在线系统服务,待升级成功后,再启动系统服 务,此种方式的缺点是在升级的过程中,会对现有业务造成一定的影响。

发明内容
本发明是鉴于上述技术问题而产生的。本发明的一个目的是提出一种动态加载系 统和方法。在一个方面中,根据本发明的动态加载系统包括包生成模块,用于将要加载的程 序进行打包;文件上传模块,用于将已打包的文件上传至虚拟机的缓存;动态加载模块,用 于在虚拟机需要调用该接口程序时将已打包的文件从虚拟机的缓存加载到内存以运行。在这个方面中,其中动态加载模块采用双亲委托模型。在这个方面中,其中动态加载模块进一步包括系统类加载器、2类加载器、以及1 类加载器,其中2类加载器的parent为1类加载器,而1类加载器的parent为系统类加载
ο在这个方面中,其中当虚拟机需要将打包文件从虚拟机的缓存加载到内存时,则 首先要求2类加载器加载,2类加载器则请求1类加载器代为加载,而1类加载器再请求系 统类加载器去加载打包文件。在这个方面中,其中若系统类加载器没有成功加载打包文件,则1类加载器会尝 试加载该打包文件,若1类加载器也不能成功加载,则2类加载器尝试装载。在另一个方面中,根据本发明的动态加载方法包括步骤:A、包生成模块将要加载 的程序进行打包;B、文件上传模块将已打包的文件上传至虚拟机的缓存;以及C、动态加载 模块在虚拟机需要调用该接口程序时将已打包的文件从虚拟机的缓存加载到内存以运行。在这个方面中,其中步骤C进一步包括首先要求2类加载器加载,2类加载器则 请求1类加载器代为加载,而1类加载器再请求系统类加载器去加载打包文件。在这个方面中,其中步骤C进一步包括若系统类加载器没有成功加载打包文件, 则1类加载器会尝试加载该打包文件,若1类加载器也不能成功加载,则2类加载器尝试装 载。
通过本发明,在不停止现有生产系统的情况下,实现对部分功能模块等的动态部
1W ο


结合随后的附图,从下面的详细说明中可显而易见的得出本发明的上述及其他目 的、特征及优点。在附图中图1示出了根据本发明的动态加载系统的方框图;图2示出了根据本发明的动态加载模块的方框图;图3示出了根据本发明的动态加载方法的流程图;图4示出了根据本发明的动态加载方法的子流程具体实施例方式为了更全面地理解本发明及其优点,下面结合附图及具体实施例对本发明做进一 步详细地说明。首先,参考图1,对根据本发明的动态加载系统进行详细地描述。当虚拟机根据需要而增加新的功能时,通过本发明,将开发完成的接口功能程序 加载到该虚拟机。如图1所示,根据本发明的动态加载系统包括包生成模块、文件上传模块、以及 动态加载模块。包生成模块用于将要加载的程序(接口和/或应用程序)进行打包。例如,将用 户java语言编写完成的接口程序,通过已知的Eclipse的导出工具或ant生成工具将接口 程序对应的.class文件打成一个jar包文件,其中.class文件包括Class对象,而Class 对象具有字段reference。这对于本领域普通技术人员来说是公知技术。另外,应该注意的 是可将一个或多个程序打成一个jar包文件。文件上传模块用于将已打包的文件上传至虚拟机的缓存。动态加载模块用于在虚拟机需要调用该接口程序时将已打包的文件从虚拟机的 缓存加载到内存以运行。动态加载模块采用双亲委托(patent delegation)模型。具体地说,图2示出了 根据本发明的动态加载模块的方框图。如图2所示,根据本发明的动态加载模块包括系统类加载器、2类加载器、以及1 类加载器。2类加载器的parent为1类加载器,而1类加载器的parent为系统类加载器。当虚拟机需要将打包文件从虚拟机的缓存加载到内存时,则首先要求2类加载器 加载。在双亲委托模型下,2类加载器首先请求1类加载器代为加载,而1类加载器再请求 系统类加载器去加载打包文件。优选地,若系统类加载器成功加载,则将该打包文件所对应 的class对象的reference返回给1类加载器。此时,1类加载器再将reference返回给2 类加载器,从而成功将打包文件加载到虚拟机。若系统类加载器没有成功加载打包文件,则1类加载器会尝试加载该打包文件, 若1类加载器也不能成功加载,则2类加载器尝试装载。
此外,优选地,根据本发明的程序动态加载系统还包括加载器实例创建单元和缓 冲存储器单元。加载器实例创建单元用于为第一次上传的每个打包文件创建加载器实例。缓冲存储器单元用于存储所创建的加载器实例,并且记录该加载器实例与已加载 到虚拟机内存中的打包文件的对应关系。因此,在以后加载该打包文件时,根据此对应关系直接在虚拟机内存中找到与该 加载器实例相对应的打包文件即可,从而实现快速加载的过程。下面参考图3,对根据本发明的动态加载方法进行详细地说明。如图3所示,根据本发明的动态加载方法包括步骤301 包生成模块将要加载的程序(接口和/或应用程序)进行打包。例如,将用户java语言编写完成的接口程序,通过已知的Eclipse的导出工具或 ant生成工具将接口程序对应的.class文件打成一个jar包文件,其中.class文件包括 Class对象,而Class对象具有字段reference。这对于本领域普通技术人员来说是公知技 术。另外,应该注意的是可将一个或多个程序打成一个jar包文件。步骤302 文件上传模块将已打包的文件上传至虚拟机的缓存。步骤303 动态加载模块在虚拟机需要调用该接口程序时将已打包的文件从虚拟 机的缓存加载到内存以运行。具体地说,如图4所示,该步骤进一步包括首先要求2类加载器加载。在双亲委托模型下,2类加载器首先请求1类加载器代 为加载,而1类加载器再请求系统类加载器去加载打包文件。若系统类加载器没有成功加载打包文件,则1类加载器会尝试加载该打包文件, 若1类加载器也不能成功加载,则2类加载器尝试装载。此外,优选地,该方法进一步包括加载器实例创建单元为第一次上传的每个打包 文件创建加载器实例,并且缓冲存储器单元存储所创建的加载器实例,并且记录该加载器 实例与已加载到虚拟机内存中的打包文件的对应关系。通过本发明可知,本发明主要实现接口程序的动态部署功能。将一个接口程序打 成一个jar包,通过网页上传至服务器目录,再动态加载至内存及类路径。不用重启应用程 序,即可以使用该接口程序,极大方便了接口的部署。此外,对于本领域的普通技术人员来说可显而易见的得出其他优点和修改。因此, 具有更广方面的本发明并不局限于这里所示出的并且所描述的具体说明及示例性实施例。 因此,在不脱离由随后权利要求及其等价体所定义的一般发明构思的精神和范围的情况 下,可对其做出各种修改。
权利要求
1.一种动态加载系统包括包生成模块,用于将要加载的程序进行打包;文件上传模块,用于将已打包的文件上传至虚拟机的缓存;动态加载模块,用于在虚拟机需要调用该接口程序时将已打包的文件从虚拟机的缓存 加载到内存以运行。
2.根据权利要求1的动态加载系统,其中动态加载模块采用双亲委托模型。
3.根据权利要求2的动态加载系统,其中动态加载模块进一步包括系统类加载器、 2类加载器、以及1类加载器,其中2类加载器的parent为1类加载器,而1类加载器的 parent为系统类加载器。
4.根据权利要求3的动态加载系统,其中当虚拟机需要将打包文件从虚拟机的缓存加 载到内存时,则首先要求2类加载器加载,2类加载器则请求1类加载器代为加载,而1类加 载器再请求系统类加载器去加载打包文件。
5.根据权利要求4的动态加载系统,其中若系统类加载器没有成功加载打包文件,则1 类加载器会尝试加载该打包文件,若1类加载器也不能成功加载,则2类加载器尝试装载。
6.一种动态加载方法包括步骤A、包生成模块将要加载的程序进行打包;B、文件上传模块将已打包的文件上传至虚拟机的缓存;以及C、动态加载模块在虚拟机需要调用该接口程序时将已打包的文件从虚拟机的缓存加 载到内存以运行。
7.根据权利要求6的方法,其中步骤C进一步包括首先要求2类加载器加载,2类加 载器则请求1类加载器代为加载,而1类加载器再请求系统类加载器去加载打包文件。
8.根据权利要求7的方法,其中步骤C进一步包括若系统类加载器没有成功加载打 包文件,则1类加载器会尝试加载该打包文件,若1类加载器也不能成功加载,则2类加载器尝试装载。
全文摘要
一种动态加载系统和方法,其中该动态加载系统包括包生成模块,用于将要加载的程序进行打包;文件上传模块,用于将已打包的文件上传至虚拟机的缓存。动态加载模块,用于在虚拟机需要调用该接口程序时将已打包的文件从虚拟机的缓存加载到内存以运行,其中动态加载模块进一步包括系统类加载器、2类加载器、以及1类加载器,其中2类加载器的parent为1类加载器,而1类加载器的parent为系统类加载器。通过本发明,实现了接口程序的动态部署功能。
文档编号H04L29/08GK102081523SQ20091015393
公开日2011年6月1日 申请日期2009年11月27日 优先权日2009年11月27日
发明者胡小刚, 钱和良, 高鑫军, 龚永兴 申请人:浙江省公众信息产业有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1