-
Notifications
You must be signed in to change notification settings - Fork 51
Home
Liubsyy edited this page Sep 16, 2023
·
51 revisions
这里是HotSeconds插件的首页,即将为你打开HotSeconds新世界的大门
- Java远程热部署代码,包括修改代码块,新增字段,新增方法,新增类,以及动态代理类。
- 支持热部署jar包中的.class和热部署整个jar包。
- 支持一些资源文件的上传和热部署(需要刷新缓存逻辑)。
- 支持单文件热更新, 批量热部署修改的文件,批量热部署git/svn差异文件,支持远程编译,支持自动热部署资源文件。
- 支持一些框架的热更新,比如Spring, SpringMVC,SpringBoot,MyBatis等。
- 支持远程执行静态无参函数功能(非静态和有参函数都可以通过静态无参函数调用),这样不用调HTTP和RPC接口就能触发某代码,结果会返回到控制台,配合热部署代码可以做到上天入地无所不能。
- 支持自定义扩展,这才是广义上的热部署,以兼容第三方框架多少论成败只是“术”,而以不变应万变让每个人都能为所欲为扩展,才是“道”。
jdk版本和dcevm版本不一致,请先确保版本是一致的。
请把用GC相关的jvm参数都删掉,包括但不限于 -XX:+UseParNewGC, -XX:+UseConcMarkSweepGC,-XX:ParallelGCThreads ,-XX:+UseCMSCompactAtFullCollection ,-XX:CMSInitiatingOccupancyFraction 等等,如果启动不起来也没有报错日志一般就是参数没删干净,如果不确定可以先只加最基本的jvm参数看看能不能起来
先确保第2步中的参数都是正确的,如果都改完了,还是有问题
先用jps看看是哪个进程pid,然后用jstack -l pid > 1.log,搜索deadlock看看有没有具体的报错,报错信息可以发一下。
- 目前发现Tomcat7可能存在死锁问题(不是一定),加上参数excludedClassLoaderPatterns可以解决,完整参数段为(注意是英文逗号不要中文逗号)
hotconf=$path2/hot-seconds-remote.xml,excludedClassLoaderPatterns=org.apache.catalina.loader.StandardClassLoader
服务器启动成功后有日志
HotDeployService热部署服务启动成功
服务端用netstat/lsof看看端口是不是起来了,客户端用telnet/nc -zv 能连通远程的端口
升级到HotSecondsServer-future2版本以上,然后在服务端加上启动参数 -Djava.rmi.server.hostname=远程ip
连接远程正常,但是热加载任何一个类报错fail或者报错Can't find classloader in server,please check hot-seconds-remote.xml,一般是hot-seconds-remote.xml中的classloader配错了,可以远程断点,然后随便找个类A,看看A.class.getClassLoader()是哪个,填到配置文件即可。