利用JRebel进行远程热部署调试

一、背景

我的工作中有些页面调试十分麻烦,例如一个支付页面,调试遇到的难点就有:
1、工程依赖了Apollo,如果要本地调试,需要本地添加Apollo的相关Java参数。
2、进入到支付页面前需要对用户做OAUTH,有个回调地址需要在微信端配置,但是只能配一个地址。如果本地要能正常跑起来,需要在Nginx配一些代理。
3、由于需要做OAuth的原因,这个页面无法在浏览器通过F12进行调试。只能改完重新启动应用后,手机扫码再看效果。
由于问题1、2的原因,本地调试基本是无望的,只能寄希望于远程调试。但是远程调试需要反复的拖包,重启,然后手机扫码看效果。我曾被这个支付页面调试折磨了很久,直到我遇见了JRebel。

二、JRebel

JRebel是一款JAVA虚拟机插件,利用它,我们就可以在不进行重部署的情况下让代码的改变生效。这里代码包括JAVA代码和xml、jsp等资源文件。当程序员在开发环境中对任何一个类或者资源作出修改的时候,这个变化会直接反应在部署好的应用程序上,从而跳过了构建和部署的过程。
可以看到,JRebel刚好解决了我的痛点。

三、安装

1、 IDEA安装JRebel插件

1-打开IDEA–>Settings,然后搜索Plugins,在下方点击Browser Repositories,在弹出来的窗口搜索JRebel,然后安装,如下所示:
在这里插入图片描述
如果下不下来,可以进行离线安装,去官网JRebel插件下载离线插件包,如下所示:
在这里插入图片描述
离线包下载要快一点。下载完成后,继续点击打开IDEA–>Settings,然后搜索Plugins,选择install from disk,安装后重启即可。

激活JRebel

因为JRebel是收费软件,所以需要激活它。好在网上有激活的反向代理软件,下载地址:https://github.com/ilanyu/ReverseProxy/releases/tag/v1.4。window环境下下载红框里的即可:
在这里插入图片描述
下载完成后,双击打开,license sever就启动了。然后继续Settings–>JRebel,点击Change lisense,如下所示:
在这里插入图片描述
在弹出来的窗口中选择I already have a license,填写好license server地址和用户邮箱,点击Change License即可。需要注意的是license server地址是:http://127.0.0.1:8888/uuid的形式,如下所示:
在这里插入图片描述
这样IDEA端的JRebel就安装完成了。

2-服务端安装

如果需要远程的应用能够及时更新代码,需要通过JRebel的Agent启动应用。服务端如何处理,可以通过IDEA–>Settings–>JRebel–>start up查看,如下所示:
在这里插入图片描述
上面列举出了在不同的环境下调试的步骤。我的服务器环境是linux 64位,应用是spring-boot2应用,需要远程热部署调试。因此根据上面的提示,需要做两个事情:

1-服务器上安装JRebel Agent文件

找到我们插件安装的位置,我的电脑是如下位置:
在这里插入图片描述
拷贝jrebel6文件夹,然后放置在服务器上面,如下所示:
在这里插入图片描述

2-脚本添加启动参数

JRebel Agent文件安装好后,我们在应用启动脚本里的DEBUG参数添加上面给出的参数:

if [ 'x'$DEBUG_PORT != 'x' ]; then
        DEBUG_OPTION="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=$DEBUG_PORT,suspend=n -agentpath:/home/xxx/server/bin/jrebel/jrebel6/lib/libjrebel64.so -Drebel.remoting_plugin=true"
fi

其中

-agentpath:/home/xxx/server/bin/jrebel/jrebel6/lib/libjrebel64.so -Drebel.remoting_plugin=true

就是此次新增的参数,这样应用启动就会通过JRebel 的Agent启动了。

四、热部署操作步骤

JRebel的安装工作做完了,接下来就开始进行热部署操作了。
首先,我们需要更改两个配置:
1-IDEA设置compile勾选自动编译。如下所示:
在这里插入图片描述
2-ctrl+shift+A 或者 help->find action…打开,然后搜索registry。找到 compiler.automake.allow.when.app.running 并勾上。如下所示:
在这里插入图片描述
然后我们新增remote server,如下所示:
在这里插入图片描述
Server Name是我们的工程名称,Server Url是应用启动后的访问地址,记住不是Debug端口。填好后,点击Test Connection,如果连上了就表示没问题了。
最后IDEA JRebel窗口勾选需要热部署的工程,此时会生成两个xml文件。服务端就是根据这个文件来判断是哪个工程需要热部署。如下所示:
在这里插入图片描述
如果有多个Remote Server,可以点击左边的铅笔按钮,然后选择使用哪个Remote Server。
这样,我们热部署就操作完了。重新打个包(保证生成的xml文件在包里面),部署上去,之后就可以进行热部署联调了。
当我们更新jsp文件后,点击同步按钮,就可以看到是否同步成功了,如下所示:
在这里插入图片描述
然后开始愉快的调试吧!调试的时候,偶尔点击同步会没有反应,请检查下jrebel是否已经激活了,然后再重启下IDEA,一般就可以了。

五、参考文档

1、Enable JRebel remote server support on the server
2、Intellij热部署插件JRebel
3、JRebel远程热部署springboot教程(我们的情况下,服务端不需要安装独立版JRebel)

说明:

这篇文章仅仅讲解如何进行远程热部署调试,重在热部署。如果是本地调式代码、或者远程调试,而不需要更新代码的,可以直接使用IDEA自带的调试或者远程调试功能,不需要费力使用JRebel。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引用\[1\]:作为web程序员,热部署对我们来说嘴熟悉不过了,如果项目没有热部署的话,会相当的麻烦,改了代码就得重新启动,如果项目比较大的话,启动要花很久的时间,有款叫Jrebel的插件非常好用,能够大大的提高工作效率,下面就来介绍怎么安装和使用这个插件。\[1\]JRebel 是国外团队开发的一款收费工具,JRebel 允许开发团队在有限的时间内完成更多的任务修正更多的问题,发布更高质量的软件产品,JRebel 可快速实现热部署,节省了大量重启时间,提高了个人开发效率。\[3\] 根据提供的引用内容,JRebel是一款非常好用的热部署插件,它能够大大提高工作效率,节省重启时间,提高个人开发效率。\[1\]\[3\]除了JRebel,还有其他一些热部署插件可供选择。其中一款比较常用的是Spring Loaded。Spring Loaded是一个开源的Java热部署工具,它可以在不重启应用程序的情况下,实时加载和应用代码的更改。它可以与Spring框架无缝集成,提供了快速的开发和调试体验。除了Spring Loaded,还有一些其他的热部署插件,如JRebel、DCEVM等,可以根据个人需求选择适合自己的插件。 #### 引用[.reference_title] - *1* [IDEA从零到精通之IDEA中安装并使用JRebel热部署插件](https://blog.csdn.net/m0_61466807/article/details/126235822)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [IDEA配置JRebel热部署(超级详细图文教程)](https://blog.csdn.net/weixin_42694593/article/details/126448828)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值