系列文章目录
前言
JRebel是一套JavaEE开发工具。Jrebel 可快速实现热部署,节省了大量重启时间,提高了个人开发效率。
JRebel是一款JAVA虚拟机插件,它使得JAVA程序员能在不进行重部署的情况下,即时看到代码的改变对一个应用程序带来的影响。JRebel使你能即时分别看到代码、类和资源的变化,你可以一个个地上传而不是一次性全部部署。当程序员在开发环境中对任何一个类或者资源作出修改的时候,这个变化会直接反应在部署好的应用程序上,从而跳过了构建和部署的过程,可以省去大量的部署用的时间。
下面手摸手教你如何搭建
一、安装和设置JRebel
1、官网下载和自己idea对应版本的 JRebel 安装包,下载链接:https://zeroturnaround.com/software/jrebel/download/prev-releases/
2、将下载好的包上传至服务器,解压命令:
unzip jrebel-2021.4.1-nosetup.zip
3、进入解压出来的目录 jrebel,对插件进行激活,执行命令:
./bin/activate.sh http://jrebel.qekang.com:80/e0b0f3e2-0d91-4e23-842c-9dfbe5ed11cd xxx@qq.com(输入自己的邮箱)
如果报错失效,就自行百度jrebel激活,找到最新的http连接就可以了。
4、设置远程密码,执行命令:
java -jar jrebel.jar -set-remote-password 88888888
5、进入目录 tomcat/bin,新建 catalina-jrebel.sh,内容如下:
#!/bin/bash
export REBEL_HOME=“[JRebel root folder]”
export JAVA_OPTS=“”-agentpath:$REBEL_HOME/lib/libjrebel64.so" -Drebel.remoting_plugin=true $JAVA_OPTS"
dirname $
/catalina.sh $@
其中 REBEL_HOME 为服务端安装路径,如:/usr/local/tomcat/jrebel
6、设置执行权限后chmod 777 catalina-jrebel.sh
,启动服务(不推荐,该命令不是后台运行,关闭服务会停止,推荐下面的方式):./catalina-jrebel.sh run
7、推荐!!!:打开catalina.sh文件,加入参数。然后正常启动tomcat就行
JAVA_OPTS="$JAVA_OPTS -agentpath:/usr/local/tomcat_airc/bin/jrebel/lib/libjrebel64.so -Drebel.remoting_plugin=true -Drebel.remoting_port=28888"
-agentpath:参数是jrebel插件安装的目录,28888端口暂时用不到,可以不加。正常起服务就可以了,ps -ef | grep java
可以看到有对应jvm参数。好的,至此服务器端的安装和设置就搞定了。
如果需要远程调试的小伙伴,可以添加该命令
CATALINA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=18888"
二、本地使用步骤
1.前置工作
1、本地idea安装和服务器对应版本的JRebel插件,激活。
2、打开 Settings -> JRebel -> Startup,右侧选择 “Run on a remote server or VM”,选择对应的服务器,如“Tomcat 5.x,6.x,7.x,8.x and 9.x”
3、打开 Settings -> JRebel -> Remote Servers,Servers URL填写自己服务的ip和端口,填写远程热部署密码。
2.工程配置
不管你的服务是war包启动,还是jar包启动,都是需要在工程中添加rebel-remote.xml,因为该文件有个id,是热部署功能找到对应模组的依据。不添加会导致热部署失败,如下:
本地报错:Synchronization of project xxx to server airc failed: Warning: Cannot find a project with ID 'xxx ' on this remote server. Maybe it is not deployed, or project's ID in rebel-remote.xml is different on the server.
,
服务器报错: JRebel: Error: Remoting module with hash 9ecec03229c8c64cbf2cd93477206c5a70514bfb was not found
如何生成该文件?打开 View -> Tool Windows -> JRebel,勾选你要远程热部署的项目就可以生成了。如果有版本控制,就建议加入版本控制,重新发版。
3.测试使用
打开某个类,编写测试代码,打个日志,然后对单个文件编译一下,按理说会自动部署,如果不会就点击热部署的按钮
执行命令
tail -1000f ../logs/catalina.out | grep JRebel
正常服务器的会出现如下图所示:
总结
分享个案例测试给我提个bug,他当时还不知道有热部署功能。我5分钟解决问题,然后热部署上去,跟他说没有问题啊,然后留下他在风中凌乱。今天的bug又少了一个。