本文章只解决tomcat部分jar包热加载:在开发项目工程中,Tomcat的lib目录下面有几百个jar包,但是只希望让lib包下面的某几个jar包在更改代码后动态生效而且不重启
步骤:
1. Idea配置jrebel
2. Tomcat jrebel的配置
3. Idea配置连接 tomcat jrebel
4. 测试远程热部署项目
热部署的那些问题
1. idea 中配置jrebel
1.1 安装jrebel插件
1.2 激活jrebel插件
idea配置参考:IDEA插件-热部署:JRebel_一张小羊毛的博客-CSDN博客_idea 热部署插件
1.2.1 生成guid
访问地址:Generate GUIDs online生成guid
1.2.2 激活
点击JRebel Activation打开激活页面
输入服务地址:https://jrebel.qekang.com/{guid}和邮箱,勾选同意条款点击激活即可
2. Tomcat jrebel的配置
2.1 文件移动
安装方式:
1. 下载地址:Previous JRebel Releases | JRebel & XRebel by Perforce
2. idea plugin 官网 https://plugins.jetbrains.com/
3. idea 插件搜索安装
找到插件位置(idea插件安装方式)
C:\Users\qpy\AppData\Local\JetBrains\IntelliJIdea2021.3\plugins
解压 jr-ide-idea.zip
将 jr-ide-idea\lib\jrebel.jar 拷贝到 \jr-ide-idea\lib\jrebel6\lib 里面 (第3步配置使用)
2.2 修改Tomcat启动命令行,增加jrebel agent
在catalina.bat 最后几行添加参数(linux的catalina.sh 类似)
windows方式: 修改catalina.bat
set "JAVA_OPTS=%JAVA_OPTS% -agentpath:绝对路径/jrebel/jrebel64.dll -Drebel.remoting_plugin=true -Drebel.dirs=项目绝对路径/webapps/子项目/WEB-INF/lib,项目绝对路径/webapps/子项目/WEB-INF/classes"
linux方式: 修改catalina.sh脚本增加启动参数
修改catalina.sh
#jrebel hotswap remote reload
JAVA_OPTS="$JAVA_OPTS -agentpath:/home/jrebel/lib/libjrebel64.so -Drebel.remoting_plugin=true -Drebel.dirs=...webapps/子项目/WEB-INF/classes, ...webapps/子项目/WEB-INF/classes"
2.3 向启动机器添加依赖文件, 文件(libjrebel64.so, jrebel.jar)放入在catalina.sh中配置参数 -> -agentpath 时指定的路径
linux示例,windows类似
1. mkdir -p /home/jrebel/lib
2. 上传libjrebel64.so 和 jrebel.jar文件,
3. 修改文件权限
chmod u+x /home/jrebel/lib/libjrebel64.so
设置jrebel远程服务密码,8位字符
./java -jar /home/jrebel/lib/jrebel.jar -set-remote-password 12345678 SUCCESS: Remote server password set to '12345678'
启动Tomcat测试jrebel是否加载成功
3.Idea配置jrebel
3.1 配置jrebel 需要远程热部署的服务器
3.2 配置jrebel启动模式
remote server模式表示其它服务器运行的tomcat
4. 测试远程热部署项目
4.1 选择需要远程部署的工程 xx-tree
此时在xx-tree 工程src/man/resources 会生成jrebel两个文件用以标识模块工程,修改工程标识ID如下所示,一般不用修改配置文件
4.2 执行mvn打包,先将带有 "rebel.xml"和"rebel-remote.xml"的jar包放入服务器,再重启服务器 (这一步很重要)
4.3 测试修改文件
浏览器访问
5. 便捷性
1. 在一个大型应用中,启动一次5分钟以上,中间浪费的时间影响工作效率,而通过 mvn package后,jrebel会自动将 class文件或jar文件同步到tomcat服务器,此时1s同步代码的时间换取了5分钟重启等待的时间