Java Class Hot Deploy

原创 2004年09月22日 15:36:00

import java.net.URL;
import java.net.URLClassLoader;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Client
{
 static ClassLoader cl;
 static ServerItf server;

 public static void loadNewVersionOfServer() throws Exception{
  URL serverURLs[] = new URL[]{new URL("file:server/")};//新版本文件放置地点
  cl = new URLClassLoader(serverURLs);//创建类载入器
  server = (ServerItf)cl.loadClass("ServerImpl").newInstance();//载入制定类并生成实例
 }

 public static void test() throws Exception{
  BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  loadNewVersionOfServer();
  while (true)
  {
   System.out.println("Enter QUOTE,RELOAD,GC, or QUIT: ");
   String cmdRead = br.readLine();
   String cmd = cmdRead.toUpperCase();
   if (cmd.equals("QUIT"))//退出程序
   {
    return;
   }else if (cmd.equals("QUOTE"))//
   {
    System.out.println(server.getQuote());
   }else if (cmd.equals("RELOAD"))//载入新类
   {
    loadNewVersionOfServer();
    System.gc();//要求虚拟机回收旧类装载器
    System.runFinalization();
   }
   else if (cmd.equals("GC"))
   {
    System.gc();
    System.runFinalization();
   }
  }
 }

 public static void main(String args[]) {
  try
  {
   test();
  }
  catch (Exception e)
  {
   e.printStackTrace();
  }
 }
};

public interface ServerItf {
 public String getQuote();
}

class Reporter
{
 Class cls;
 Reporter(Class cls) {
  this.cls = cls;
  System.out.println("ServerImpl class "+cls.hashCode()+" loaded into VM");
 }

 protected void finalize(){
  System.out.println("ServerImpl class "+cls.hashCode()+" unloaded from VM");
 }
};

public class ServerImpl implements ServerItf
{
 static Object reporter = new Reporter(ServerImpl.class);
 public String getQuote(){ return " A rolling stong gathers no moss";}
 }
};

【转】精通IntelliJ Idea之热部署

原文:http://blog.buyihanshe.com/20090606/mastering-intellij-idea-hot-deploy.htm 部署在项目开发过程中是常有的事,特别是de...
  • wag2765
  • wag2765
  • 2016年01月25日 16:27
  • 5195

升级android studio后编译的应用短暂白屏

android的新版本出了一个革命性的功能就是Instant Run(即时运行)!新的即时运行功能可以让开发者像写html网页一样写Android原生代码,能做到一边修改代码,一边在模拟器或者实际设备...
  • lijiaweiljw
  • lijiaweiljw
  • 2016年06月07日 10:50
  • 1618

Android热修复(Hot Fix)案例全剖析(一)

说到热修复技术,我们不得不先谈一下什么是冷修复。冷修复    当我们发现上线的应用APK存在Bug,我们通过发布新的应用APK,去替换旧的应用APK,以达到解决Bug的目的,但是这样做存在很大的缺点,...
  • mynameishuangshuai
  • mynameishuangshuai
  • 2016年10月02日 16:25
  • 3433

记一次解决jenkins持续构建,自动部署的问题

问题背景:         用jenkins在持续构建:在从svn迁出代码,build成功,把jar/war上传私服nexus后,将项目直接部署到应用服务器中,曾经做过直接部署到tomcat中没有...
  • shan9liang
  • shan9liang
  • 2014年02月28日 21:07
  • 19235

eclipse 使用Maven deploy命令部署构建到Nexus上 【二】

1  应用场景:SYS-UTIL(系统工具)项目部署、构建成JAR包(SYS-UTIL-XXX.jar)存储到Nexus私服上,以供其它项目(依赖)使用 2 目的:通过Nexus网页服务器管理项...
  • jun55xiu
  • jun55xiu
  • 2015年01月23日 10:27
  • 15340

Maven常用插件使用说明之deploy

转:http://blog.sina.com.cn/s/blog_401e056d0100n452.html Maven的deploy插件用于把Maven自动构建生成的版本发布到中央代理仓库...
  • wxwzy738
  • wxwzy738
  • 2014年03月10日 18:14
  • 2355

利用mvn deploy命令上传包

mvn安装 下载maven的bin,在apache官方网站可以下载。 https://maven.apache.org/download.cgi在PATH里加入maven的bin的路径配置完毕后,...
  • chenaini119
  • chenaini119
  • 2016年10月09日 10:56
  • 7237

数据处理——One-Hot Encoding

一、One-Hot Encoding     One-Hot编码,又称为一位有效编码,主要是采用位状态寄存器来对个状态进行编码,每个状态都由他独立的寄存器位,并且在任意时候只有一位有效。     ...
  • google19890102
  • google19890102
  • 2015年03月03日 16:54
  • 46923

Caffe学习笔记5--deploy文件的修改与使用

deploy文件的修改目是为了我们能够真正使用训练好的模型进行预测,输出概率及最佳结果的重要过程。 问题背景: 如我们前面已经生成了一个预测手写体识别的模型,我们现在如何预测某个人写的数字是多少呢...
  • l18930738887
  • l18930738887
  • 2017年02月06日 23:15
  • 2412

Jenkins——应用篇——插件使用——Deploy to container Plugin

本文介绍在Jenkins中如何通过Deploy to container Plugin插件将构建好的war包发布到远程的WEB容器中,以Tomcat为例进行说明。...
  • houyefeng
  • houyefeng
  • 2016年03月28日 12:00
  • 7418
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java Class Hot Deploy
举报原因:
原因补充:

(最多只允许输入30个字)