jreble实现热更新和热部署

注:1.新增文件问题:如果删除了.java文件则jreble不会生效,jrebel自动加载编译的时间按有不确定性,所以最好推荐手动编译ctrl+shift+F9或ctrl+shift
2.application.yml文件,测试发现,在本地热更新中和远程部署中aoolication.yml文件可以实现热更新,但是也仅限于新增、修改,如果是删除配置,是不会生效的

1.激活流程

方法一:

  1. 安装JRebel插件后,注册地址填写激活网址 + 生成的GUID,邮箱随便填写,然后直接激活即可
    激活网址列表,尽量用排序靠前的
    http://jrebel-license.jiweichengzhu.com/{GUID}
    https://jrebel.qekang.com/{GUID}
    GUID可以使用在线GUID地址在线生成,然后替换{GUID}就行。
    2.下面邮箱地址可随便输入。
    3.选择我同意
    4.提交
    方法二:
    1.前置步骤均一致,在填入Team URL时,填入以下内容
    http://127.0.0.1:8888/{GUID}
    GUID可以使用在线GUID地址在线生成,然后替换{GUID}就行。
    2.下面邮箱地址可随便输入。
    3.选择我同意
    4.提交
报错解决

报错:如果报Unable to connect to license server.Check your network connnection and/or VPN settings.
解决: 1.下载机器系统对应工具 https://github.com/ilanyu/ReverseProxy/releases
2.打开后继续激活
image.png

2.热更新配置

热更新的核心在于:主要是通过监控编译后文件夹,所以所有的改动都要基于我们已经进行了编译,
核心文件:rebel.xml
1.开启自动编译
image.png
2.Shift+Ctrl+Alt+/,选择Registry
image.png
3.配置需要热部署的项目
image.png
4.如果上述情况都配置好但是还是没有生效,那么终极手段:删除项目中的.idea文件,清除idea缓存并重新加载项目
image.png
4.关于新增.java文件,但是jreable没有热加载
解决:当我们选择jrebel热加载模块之后会在项目中生成rebel.xml文件,文件中配置了监听项目编译后的文件夹,所以如果新增了.java文件,我们需要编译之后才能生效,快捷键:crtl + shift +F9
image.png

3.热部署

3.1服务器配置

1.下载jrebel安装包
curl -O http://dl.zeroturnaround.com/jrebel-stable-nosetup.zip
2. 解压下载文件
unzip jrebel-stable-nosetup.zip
解压后目录为:
image.png
3.为JRebel设置密码,这里设置的密码需要在后续远程连接中使用(重要)

java -jar jrebel/jrebel.jar -set-remote-password 12345678

4.启动应用程序

启动jar包,指向日志文件,2>&1 & 表示打开或指向同一个日志文件

nohup java "-agentpath:/data/jrebel/jrebel/lib/libjrebel64.so" -Drebel.remoting_plugin=true -jar jenkins_test.jar --spring.config.location=application.yml 2<&1 &

参数说明:
-Drebel.remoting_plugin=true 表示开启jrebel远程插件
"-agentpath:/data/jrebel/jrebel/lib/libjrebel64.so"是你解压的jrebel目录改为自己的目录
image.png
至此,服务器配置完成。

3.2IDEA配置

1.选择服务器系统运行
image.png
2.配置远程服务器连接到服务器的jrebel
image.png
3.勾选远程部署模块,第1个小图标表示本地哪些模块进行热更新,第2个小图标表示哪些模块可以远程热部署
image.png
3.点击开始远程热部署
image.png
注意:进行远程热部署的前提是我们在本地已经热更新完成,这里还是推荐手动来热部署,只要使用ctrl+shift+F9快捷键编译之后,会自动触发本地热更新和远程热部署

避坑!!!

报错:Cannot find a project with ID ‘com.jenkins.jenkins_test’ on this remote server. Maybe it is not deployed, or project’s ID in rebel-remote.xml is different on the server.

原因:远程服务器中没有发现id为xxx的远程服务,这里是因为我之前打包上传到服务器运行时,idea没有勾选开启远程部署,没有生成rebel-remote.xml文件,所有jar中也没有包含rebel-remote.xml文件,导致在远程服务器上找不到指定的id服务
解决:打包之前一定要开启远程部署生成rebel-remote.xml文件,并打包到jar包中运行

4.springboot自带热更新

4.1导入依赖
<!-- spring-boot-devtools -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional> <!-- 表示依赖不会传递 -->
</dependency>
4.2 开启自动编译

image.png

4.3设置启动类策略,修改和切换页面都会重新启动

image.png
区别:devtools是监测到修改之后,完全重新启动,jreble是只会重新编译你修改的java文件,推荐jrebel
结论:不管是那种热更新,都不推荐在正式服务中使用,还是有很大不确定性和弊端,可以在开发环境使用,提高开发效率,而且如果是微服务部署,则会使用docker容器部署,那么jreble远程部署功能能否正常使用也是未知数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值