快速业务通道

类的热加载(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

package com.unmi; /**  * Cat 的实现类,观察是否加载了最新代 码,可通过改变 miaow() 方法的输出  * @author Unmi  */ public class CatImpl imp

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号