Java组件的运行时替换方法

来源 :吉林大学 | 被引量 : 0次 | 上传用户:czhaoguof
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
一般来说,一个软件系统在交付使用之后,会经历无数次的更新。我们通常所接触的更新都是静态软件更新,它是按照“关闭-更新-重新启动”这样的步骤进行的。和它相对应的是动态软件更新,动态软件更新的产生是由于用户难以接受更新所造成的拒绝服务。对于银行和电话交换系统软件来说,它们是不允许停止服务的。对于空中运输控制和生命维持软件,小小的中断都会关系到人们的生命安全,因此它们是一定不能中断的。在这些情况下,就需要程序具有动态更新的能力。本文的主要工作是提供和实现了一种JAVA软件动态更新方法,使得在不影响系统的持续运行的情况下,以组件为逻辑单位,以类为原子进行替换。运行时替换的一个难点是状态传递。通过状态传递,新组件能在旧组件已有计算的基础上继续执行,而不会使计算退化。以往的状态传递方法都是要新旧组件提供状态传递的接口,这样就必须事先为被替换组件准备状态传递接口。本文在sun的Java平台上实现了一种方法,自动完成状态传递,而不需要事先准备。并且将对象的状态定义为静态数据区,通过使新旧组件共享静态数据区,从而使新旧组件状态保持一致,完成状态传递,这种方法不需要旧组件事先准备相应的状态传递接口,而且没有性能损失。在实现上本文是以类为替换的最小单位,根据组件中类与类之间的依赖关系构建多个类的替换序列来完成组件替换(这里的组件不止局限于Java中的组件定义,它是指体系结构中的组件)。由于JVM本身对类的动态更新支持的不理想,所以本文在运行时对JVM的相应部分进行了少量的修改和扩充,使之能够完成对运行时类替换的支持,再由多个类的替换序列组成组件替换。运行时修改虚拟机是为了适应已有的正在虚拟机中运行着的程序,从而实现不用事先准备就能进行运行时演化。而且每次替换都有版本管理,解决替换中的名字冲突问题,以及保证下一次替换的一致性和正确性。本文提供了一个工具,实现了上面的想法。替换时把新组件和替换详细说明提交给这个工具,由它自动完成替换操作。以往的动态更新方法是等待旧组件没有活动的调用,才进行替换,所以必须等待时机。有可能一直都没有合适的时机,所以就有可能一直得不到替换。本文所提出的方法的好处是替换马上生效,已有的对象调用使用旧对象,新的对象调用使用新对象,这就形成了一个新旧对象共存的过渡阶段,等所有的旧对象都过了生命期,系统中就只有新对象了。最终完成整个替换过程。
其他文献
机场作为航空运输和城市的重要基础设施,是综合交通运输体系的重要组成部分。经过几十年的建设和发展,我国机场体系初具规模,初步形成了以北京、上海、广州等枢纽机场为中心,其余
在Internet日益发展与壮大的过程中,IPv4网络协议起到了不可低估的作用.但是随着更多的网络终端连入Internet,IP网络地址明显的出现了"匮乏危机",同时日益增加的路由表空间也
本文主要研究探讨企业CIMS进行信息集成时,如何建立具有良好的可移植性、可重用性、可扩展性的异构数据集成模型,使它基于企业的信息特征,在异构分布环境(操作系统、网络、数
医学领域已成为数据挖掘的一个重要领域.在当前医学中,存在大量的可以使用的历史成功案例数据,这些数据中蕴含着很有实用价值的规则,医生可以利用这些规则对新的病人进行辅助
集装箱货运是现代物流业中很重要的环节,各地的集装箱码头、船运公司采用了各种办法来提高集装箱周转的效率。人们发现,在码头机械上运用自动化控制装置能够极较大的提高集装箱
从目前的网络安全状况来看,非授权访问已经成为威胁网络安全的重要因素.而认证技术是防止非授权访问网络的重要手段.随着计算机网络的迅猛发展,如何防止有效地非授权访问,如
B/S模式是指浏览器/服务器模式,是随着Internet的兴起,是在二十世纪九十年代计算机网络技术兴起的前提下,逐步被人们认识到优越于传统的C/S模式的优点,才把这种三层结构应用到软
众所周知,由传统专家系统方法建立的诊断系统存在诸多缺陷,如所收集知识的不完备性、系统对知识的依赖性、获得专家知识不一致性等。基于模型诊断推理正是克服传统专家系统的这
20世纪90年代以来,随着Internet和多媒体技术的迅速发展,静态图片与文本信息已经不能满足实际应用的需求,网络多媒体成为当前计算机领域研究的热点之一.Internet工程任务组发
在移动IP环境下,移动网络中的组播协议不仅要处理组播组中动态变化的组成员关系,而且要处理组成员位置动态变化的情况.当组成员移动时,如果重新构建组播树,就意味着增加网络