类的热加载(Hot Deployment)的简单例子 - 编程入门网
类的热加载(Hot Deployment)的简单例子时间:2011-08-31应用服务器一般都支持热部署(Hot Deployment),更新代码时把新编译的确类 替换旧的就行,后面的程序就执行新类中的代码。这也是由各种应用服务器的独 有的类加载器层次实现的。那如何在我们的程序中也实现这种热加载功能呢?即 要在虚拟机不关闭的情况下(比如一个),换个类,JVM 就知道加载这个新类,执 行新类中的逻辑呢?下面就简单演示这样一个热加载的例子,首先大致了解一下 类加载器。 标准 Java 启动器的类加载器层次 1. 引导类加载器(bootstrap): 加载内核 API,如 rt.jar(java.lang、 java.io 等) 2. 扩展类加载器(extension): 加载的默认扩展来自于 jre/lib/ext 3. 系统类加载器(system): 类路径上的类,如 com.unmi.* 说明:这只是标准 Java 启动器运行程序时的类加载器层次,像应用服务器中 的类加载器通常会多一两层,也是在这个基础上的延伸。上面的类加载层次存在 自上而下的委托关系,委托加载不在这里细讲。 类加载器的规则有三 1. 一致性规则:类加载器不能多次加载同一个类 2. 委托规则 :在加载一个类之前,类加载器总参考父类加载器 3. 可见性规则:类只能看到由其类加载器的委托加载的其他类,委托是类的 加载器及其所有父类加载器的递归集。(这个规则可能不太好理解,要举个例子就 很容易理解的,这里也不细说) 实际的例子演示热加载 1. 建立工程,编写代码 前面铺垫的应该够厚了,开始用个例子来说明感受类的热加载(又名热部署 Hot Deployment)。这个例子采用 Eclipse 来做,首先要建立两个普通的 Java 工程,分别是 TestHotDeployInf 和 TestHotDeployImpl。让 TestHotDeployImpl 依赖于 TestHotDeployInf 工程,即在 TestHotDeployImpl 的 Build Path 中,Projects 标签页里把 TestHotDeployInf 工程选进来,因为 编译 TestHotDeployImpl 中的类要用到 TestHotDeployInf 中的类。 然后在工程式 TestHotDeployInf 中新建一个接口(Cat.java) 和一个类 (Client.java),内容分别是: 类的热加载(Hot Deployment)的简单例子(2)时间:2011-08-31Cat.java(Cat 接口类,也可以用抽象类,用来引用需热加载的实现类的实 例)
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |