类的热加载(Hot Deployment)的简单例子 - 编程入门网
作者 佚名技术
来源 NET编程
浏览
发布时间 2012-06-15
em.out.println("CatImpl reloaded.");
} else if (cmd.equalsIgnoreCase("miaow")){
cat.miaow();
}
}
}
/**
* 使用加载 的类 Cat 类创建 Cat 实例
* @return Cat 实例
* @throws Exception
*/
public static synchronized Cat createCat() throws Exception{
if(catClass==null){
reloadImpl();
}
Cat newCat = (Cat) catClass.newInstance();
return newCat;
}
/**
* 用自定义的类加载器重新加载 ../TestHotDeployImpl/bin 目录中 的 CatImpl 实现类
* 注意这里的 ../TestHotDeployImpl/bin,方便 直接读取 TestHotDeployImpl 下随时
* 修改后编译成的新的 com.unmi.CatImpl 类,避免了 class 文件编译后拷贝到别处
* @throws Exception
*/
public static synchronized void reloadImpl() throws Exception{
URL[] externalURLs = new URL []{new URL("file:../TestHotDeployImpl/bin/")};
cl = new URLClassLoader(externalURLs);
catClass = cl.loadClass ("com.unmi.CatImpl");
}
}
package com.unmi;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLClassLoader;
/**
* 测试热部署 Hot Deployment 的客户端类
* @author Unmi
*/
public class Client {
private static ClassLoader cl;
private static Class catClass;
/**
* @param args
*/
public static void main (String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
Cat cat = createCat();
System.out.println("miaow, reload, or exit");
while(true){
String cmd = br.readLine();
if (cmd.equalsIgnoreCase("exit")){
return;
} else if (cmd.equalsIgnoreCase("reload")){
reloadImpl();
cat = createCat();
System.out.println("CatImpl reloaded.");
} else if(cmd.equalsIgnoreCase("miaow")){
cat.miaow();
}
}
}
/**
* 使用加载的类 Cat 类创建 Cat 实例
* @return Cat 实例
* @throws Exception
*/
public static synchronized Cat createCat() throws Exception{
if(catClass==null){
reloadImpl();
}
Cat newCat = (Cat)catClass.newInstance();
return newCat;
}
/**
* 用自定义的类加载器重新加载 ../TestHotDeployImpl/bin 目录中的 CatImpl 实现类
* 注意这里的 ../TestHotDeployImpl/bin,方便直接读取 TestHotDeployImpl 下随时
* 修改后编译成的新的 com.unmi.CatImpl 类,避免了 class 文件编译后拷贝到别 处
* @throws Exception
*/
public static synchronized void reloadImpl() throws Exception{
URL[] externalURLs = new URL[]{new URL("file:../TestHotDeployImpl/bin/")};
cl = new URLClassLoader (externalURLs);
catClass = cl.loadClass("com.unmi.CatImpl");
}
}
类的热加载(Hot Deployment)的简单例子(3)时间:2011-08-31还要在 TestHotDeployImpl 中添加一个 Cat 的实现类 CatImpl
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
关于类的热加载(Hot Deployment)的简单例子 - 编程入门网的所有评论