2020-12-25 16:22
@JFinal jrebel这么牛,想了解除原理 网络上找了一遍,没搞明白,倒是搜索到阿里的HotCode相关资料,可惜网络没有找到可用程序。
HotCode资料:https://www.open-open.com/ppt/54489ff66016406d8c06292637e59910.html
2020-12-24 15:58
@JFinal 刚搜索了试用了下你说到的jrebel,发现其是热加载技术,支持类的添加,方法添加等操作而不会丢失内存对象状态。已经在我的idea intellij是安装并初步使用,开发体验优于idea的默认debug模式(主要优化debug不支持的类添加,方法添加等等热加载操作)。真不错。
2020-12-24 12:34
@JFinal 原来是这样的啊,开发时如果能热部署的话,还是挺不错的。不过我最新开发发现由于shiro session的问题影响我的开发效率,所以,我就研究了一番。
那如果deMode = false会不会影响到其它功能开发体验呢?(会不会影响其它功能的开发,缓存 的更新?),即:有需要给热部署独立设置一个开关吗(在热部署还未成熟时)?
2020-08-05 14:25
@lxhxka
发现的确不一样,不知道为何会不一样。
curInterClass 的 类加载器为:sun.misc.Launcher$AppClassLoader@18b4aac2
ci 的 类加载器为:org.eclipse.jetty.webapp.WebAppClassLoader=jfinal offical website@72d1ad2e
2020-08-04 13:16
@lxhxka 自己写jetty代码加载, 用java Runtime.exec执行main方法启动:
public static void main(String[] args) {
String port = args[0];
String webRoot = args[1];
String extClassPath = args[2];
System.out.println("port:" + args[0] + "\nwebRoot:" + args[1] + "\nextClassPath:" + extClassPath + "\n");
try {
startWithJetty(Integer.parseInt(port), webRoot, extClassPath);
} catch (Exception exception) {
exception.printStackTrace();
}
}
public static void startWithJetty(int port, String webroot, String extClassPath) throws Exception {
Server server = new Server(port);
WebAppContext context = new WebAppContext();
context.setContextPath("/");
context.setResourceBase(webroot);// 指定webapp目录
context.setExtraClasspath(extClassPath);
server.setHandler(context);
server.start();
server.join();
}