模块化JAVA应用软件在线更新系统及方法技术方案

技术编号:6310192 阅读:969 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种模块化JAVA应用软件在线更新系统,包括有软件资源信息挖掘子系统和软件动态更新子系统,其中,所述软件资源信息挖掘子系统包括有系统文件监视器、源代码加载分析器、系统类分析器、类依赖关系产生器、树或有向图依赖关系产生器和模块划分产生器;所述软件动态更新子系统包括有接口、总代理单元、模块代理单元及管理平台;总代理单元包括:工厂模块、时间戳模块和注册中心;模块代理单元包括:对象管理器、类加载器和模块描述器。本发明专利技术不必重新启动业务系统即可实现业务的加载。本发明专利技术同时公开了一种模块化JAVA应用软件在线更新方法。本发明专利技术在不重启系统的情况下实现了业务的加载。

【技术实现步骤摘要】

本专利技术涉及一种模块化JAVA应用软件在线更新系统及方法。
技术介绍
随着信息化社会的不断发展,一个软件系统随需求的变化不断地更新已变得非常 普遍,由此,软件更新对于一个软件系统来说也变得至关重要,只有持续不断的进行软件的 更新才能适应用户不断变化的用户需求。为了适应软件的易更新性,优秀的设计模式不断被投入到软件设计中,对软件更 新在设计时提供了巨大的支持,新的技术及体系架构也不断涌现以实现软件更新的易用 性,例如面向方面编程及面向服务的体系结构,这些设计模式、技术以及体系结构都能实现 代码的独立性和易扩展性,以达到软件易更新和易扩展的目的,但是这些技术只是解决了 开发阶段的软件更新,却未能解决系统运行时进行软件动态更新的问题。目前,对于一个已经上线的软件系统,如果对其进行更新必须停止服务器的运行, 并对更新后的软件系统重新编译发布并进行部署,这必然会导致软件系统的服务在一定时 间内处于停滞状态,从而会影响到用户的使用,对于拥有大量用户的业务系统来说,如空中 交通管制系统、全球性的金融交易系统、工业控制系统、网络服务系统等,通过停止、更新和 重启来实现维护和更新将导致不可接受的延迟、代价和危险,并造成大量的经济损失。
技术实现思路
有鉴于此,本专利技术的主要目的在于提供一种模块化JAVA应用软件在线更新系统 及方法,能在不停止系统业务的情况下实现新增或更新业务的加载,业务加载后不必重启 业务系统。为达到上述目的,本专利技术的技术方案是这样实现的—种模块化JAVA应用软件在线更新系统,包括有软件资源信息挖掘子系统和软 件动态更新子系统,其中,所述软件资源信息挖掘子系统包括有系统文件监视器、源代码加 载分析器、系统类分析器、类依赖关系产生器、树或有向图依赖关系产生器和模块划分产生 器;其中所述系统文件监视器用于配置客户软件系统的监控目录并提取出所述监控目录 中的文件信息;所述源代码加载分析器用于将所述客户软件系统中获取的源代码文件以文件为 单位以字符流的方式加载到内存;所述系统类分析器用于从所述客户软件系统中获取文件信息及源代码中提取出 所述客户软件系统中所有的类及类本身的信息,并将所述类本身的信息依次注册到接口描 述文件中;所述类依赖关系产生器用于读取所述系统类分析器产生的类信息,并结合所述类 本身的信息在所述源代码加载分析器中进行逆向分析,产生每个类对其它类的依赖关系,5并将产生的关系依次注册到所述接口描述文件中;所述树或有向图依赖关系产生器用于读取所述类依赖关系产生器中产生的类的 依赖关系,并结合所述类本身的信息产生相应的依赖关系树结构或有向图,以供所述软件 动态更新子系统进行分析读取,以在更新过程中确定类的加载顺序;所述模块划分产生器用于对所述客户软件系统以依赖关系为单位进行模块划分, 并产生模块结构,将所述模块结构提供给所述软件动态更新子系统,所述软件动态更新子 系统在更新时按照所划分的模块分别按阶段独立更新;所述软件动态更新子系统包括有接口、总代理单元、模块代理单元及管理平台;其 中所述总代理单元用于在接收到用户输入的待加载的类的参数后生成所述类的实 例对象或应用程序的调用结果;所述模块代理单元用于利用用户输入的类的参数对管理模块内所有类的加载、对 象的实例化和类的更新;管理平台用于管理所述客户软件系统,并为所述软件动态更新子系统提供必要的 工具支持,主要包括创建动态配置文件及其读取和写入、类依赖关系的解析、模块依赖关系 的解析、文件及目录的复制工具;所述接口包括内部接口和外部接口,所述内部接口为所述软件资源挖掘子系统与 所述软件动态更新子系统之间的接口 ;所述外部接口用于向开发人员提供编程接口及类的 参数输入接口。其中,所述总代理单元包括工厂模块,用于负责创建和维护所述模块代理单元处理的实例,即维护模块名到 实例的映射,并将所述总代理单元的请求进行参数处理,调用对应的模块代理单元进行处 理;在当前请求为获取对象请求时,在将实例对象返回给所述总代理单元之前触发时间戳 模块,通过对所述代理实例对象设定时间戳后再返回给所述总代理单元;时间戳模块,用于在应用软件更新时,记录下所有更新类的更新时刻,接收到应用 系统对所述应用软件的调用请求时,首先将参数中的时间与所设置的更新时间戳进行对 比,若早于更新时间则返回调用旧类的结果,否则返回调用更新后的类的结果;在应用请求 为获取对象请求时,在实例对象返回给应用请求之前设定其生成时间,即将实例对象的属 性字段设定为当前的时间;注册中心,用于记录当前所有的模块及每个模块涉及的具体的类、确定所述类是 否注册及其所属的模块。其中,所述模块代理单元包括对象管理器,用于根据索取的对象实例的具体请求来返回不同的实例对象;即通 过调用类加载器索取类的类型对象,并通过反射方式返回实例化对象;类加载器,用于根据请求将指定的类文件加载至内存,同时返回对应类的类型对 象的引用;通过调用模块描述器读取当前请求类的更新时间,之后与参数中的时间进行对 比,若所述参数的时间早于时间戳的时间则返回旧的类的类型实例对象,否则返回新的类 的类型实例对象;模块描述器,用于描述模块内所有类文件的信息,包括类名、类名所对应的路径、有无更新、对应更新后类的信息、更新的时间点。其中,所述类依赖关系产生器先使用正则表达式将源文件中的所有非编译部分的 注释全部去除,然后通过总结一个类在JAVA源代码中被调用的方式,使用正则表达式与类 名进行组合,然后再在全文件中进行搜索匹配,保证依赖关系生成的正确性。其中,所述模块划分产生器在模块划分的过程中对每个模块设立标志位,对于纵 向划分过程中使用切割生成的模块,对于其他模块有依赖关系进行标志,并对模块下的起 始类设置上层关联类存储字段以存储在切割之前的上层类,通过该上层类所在的模块而确 定模块之间的依赖关系。一种模块化JAVA应用软件在线更新方法,包括监视客户软件系统输入的扫描路径,提取并分析扫描路径下的文件目录,以文件 为单位以字符流的方式加载到内存;对系统文件监视器中生成的文件目录进行分析,提取 客户软件系统中所有的类及类信息,并将类信息注册到所设置的中间文件中;读取所述类 信息,并在所加载的源代码信息中进行逆向分析,产生每个类对于其他类的依赖关系,并将 产生的依赖关系依次注册到所述中间文件中;根据类之间的依赖关系,结合类信息生成依 赖关系树结构或有向图结构,并对依赖关系树结构或有向图结构进行分割,生成模块结构, 同时生成包含有模块划分和模块内部所有类关系的类配置文件和模块间依赖关系的模块 配置文件;并将两配置文件部署到服务器上,同时配置启动所需的文件;读取类配置文件 和模块配置文件,将从上述类配置文件和模块配置文件中读取的类和模块信息注册到注册 中心新生成的新配置文件中,并生成模块代理和对应模块的描述文件;接收到更新类的选择输入后,根据更新前类名提取出新类所在位置,将新类拷贝 到对应的文件目录中;接收新增扫描指令后,监视所输入的扫描路径,提取并分析扫描路径下的新增模 块源代码文件目录列表,以文件为单位以字符流的方式加载到内存,并对系统文件监视器 中产生的文件目录进行分析,提取客户软件系统中所有的新增类及类信息,读取所述类信 息,在加载的新增源代码信息中进行本文档来自技高网...

【技术保护点】
1.一种模块化JAVA应用软件在线更新系统,其特征在于,包括有软件资源信息挖掘子系统和软件动态更新子系统,其中,所述软件资源信息挖掘子系统包括有系统文件监视器、源代码加载分析器、系统类分析器、类依赖关系产生器、树或有向图依赖关系产生器和模块划分产生器;其中:所述系统文件监视器用于配置客户软件系统的监控目录并提取出所述监控目录中的文件信息;所述源代码加载分析器用于将所述客户软件系统中获取的源代码文件以文件为单位以字符流的方式加载到内存;所述系统类分析器用于从所述客户软件系统中获取文件信息及源代码中提取出所述客户软件系统中所有的类及类本身的信息,并将所述类本身的信息依次注册到接口描述文件中;所述类依赖关系产生器用于读取所述系统类分析器产生的类信息,并结合所述类本身的信息在所述源代码加载分析器中进行逆向分析,产生每个类对其它类的依赖关系,并将产生的关系依次注册到所述接口描述文件中;所述树或有向图依赖关系产生器用于读取所述类依赖关系产生器中产生的类的依赖关系,并结合所述类本身的信息产生相应的依赖关系树结构或有向图,以供所述软件动态更新子系统进行分析读取,以在更新过程中确定类的加载顺序;所述模块划分产生器用于对所述客户软件系统以依赖关系为单位进行模块划分,并产生模块结构,将所述模块结构提供给所述软件动态更新子系统,所述软件动态更新子系统在更新时按照所划分的模块分别按阶段独立更新;所述软件动态更新子系统包括有接口、总代理单元、模块代理单元及管理平台;其中:所述总代理单元用于在接收到用户输入的待加载的类的参数后生成所述类的实例对象或应用程序的调用结果;所述模块代理单元用于利用用户输入的类的参数对管理模块内所有类的加载、对象的实例化和类的更新;管理平台用于管理所述客户软件系统,并为所述软件动态更新子系统提供必要的工具支持,主要包括创建动态配置文件及其读取和写入、类依赖关系的解析、模块依赖关系的解析、文件及目录的复制工具;所述接口包括内部接口和外部接口,所述内部接口为所述软件资源挖掘子系统与所述软件动态更新子系统之间的接口;所述外部接口用于向开发人员提供编程接口及类的参数输入接口。...

【技术特征摘要】

【专利技术属性】
技术研发人员:张玉洁孟祥武王闯
申请(专利权)人:北京邮电大学
类型:发明
国别省市:11[中国|北京]

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

1