JRebel远程热部署springboot教程

本文详细介绍如何通过JRebel实现Spring Boot项目的远程热部署。包括在CentOS服务器上安装配置JRebel,以及在IntelliJ IDEA中设置远程连接等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

内容介绍

JRebel有两个非常酷的特性,一是支持热部署,二是支持远程热部署。具体见JRebel特性

本篇文章的内容是记录一次我的远程热部署的搭建过程。

环境说明

  1. 服务器是centos 7 64位。
  2. 本地电脑是win10,安装了IntelliJ IDEA,JRebel并已激活。
  3. 有一个springboot项目。

步骤

要实现远程热部署,我们需要做的简单分为几步:
1. 在服务器安装一个JRebel
2. 配置本地的JRebel
3. 在服务器用JRebel启动项目
4. 本地添加远程服务器

在服务器安装一个JRebel

  1. 官网下载最新的JRebel,点击官网链接

    当前最新版本是2018.1.0,点击上图中的File列的文件名即可下载。这里的版本是standalone的,也就是独立的,JRebel目前有两种版本,一种是依赖IDE的,一种是独立的,我们的服务器上需要安装独立版。

  2. 解压下载好的Zip
    unzip jrebel-2018.1.0-nosetup.zip
    如果提示command not found,安装unzip
    yum install unzip
    如图:

  3. 激活JRebel
    我这里是使用 activation code 进行激活,调用bin目录下的 activate.sh 跟上 activation code 即可。

    其他激活方式请查看官网,点击进入,如图:

  4. 设置服务器密码
    java -jar jrebel.jar -set-remote-password

配置本地的JRebel

  1. 设置JRebel的Startup为 Run on a remote server or VM,如图:

  2. View -> Tool Windows -> JRebel 进入 JRebel Panel窗口,打勾后会生成rebel.xmlrebel-remote.xml,如图:

  3. 使用maven的package命令打包,生成baba-0.0.1-SNAPSHOT.jar,如图:

    打开jar可以看到JRebel生成的rebel.xmlrebel-remote.xml

  4. 将jar上传至服务器

在服务器用JRebel启动项目

进入jar所在目录,运行命令启动项目


nohup java "-agentpath:/usr/common/jrebel/lib/libjrebel64.so" -Drebel.remoting_plugin=true -jar baba-0.0.1-SNAPSHOT.jar &

-agentpath:/usr/common/jrebel/lib/libjrebel64.so片段中的/usr/common/jrebel为你安装的jrebel的路径

PS:详细配置内容,点击可见

查看日志文件,如图说明运行成功

本地添加远程服务器

Server URL的端口是web端口,点击Test Connection会如图显示 Connection successful

接下来全部配置完成,试试

参考:http://manuals.zeroturnaround.com/jrebel/remoteserver/index.html

以上。

### Spring Boot 热部署配置及解决方案 #### 1. 使用 `spring-boot-devtools` 实现热部署 为了实现热部署,可以引入官方提供的 `spring-boot-devtools` 工具。该工具能够自动检测类路径中的文件变化并触发应用重启[^1]。以下是具体的 Maven 配置: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional> </dependency> ``` 此外,还需要确保在构建插件中启用 `fork` 参数以支持 DevTools 功能: ```xml <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <fork>true</fork> </configuration> </plugin> </plugins> </build> ``` 当项目发生变化时,DevTools 将会重新加载上下文,而不需要完全重启整个 JVM,这显著提升了开发效率[^4]。 --- #### 2. IntelliJ IDEA 中的设置 除了引入依赖外,还需调整 IDE 的相关设置以配合热部署功能。具体步骤如下: - **开启编译器自动编译选项** 在 IDEA 中进入 `File -> Settings -> Build, Execution, Deployment -> Compiler`,勾选 `Build project automatically`[^2]。 - **绑定快捷键** 默认情况下,IDEA 不会在保存文件时立即编译更改的内容。可以通过按下 `Ctrl + F9` 手动触发增量编译,或者通过注册宏将此行为映射到文件保存事件上。 --- #### 3. 解决常见的热部署问题 ##### (1) 性能开销过大 虽然 DevTools 提供了便捷的热重载能力,但在大规模项目中可能会增加内存消耗和 CPU 占用率。如果发现性能瓶颈,建议仅在本地开发环境下启用 DevTools,并将其标记为可选依赖 `<optional>true</optional>`[^2]。 ##### (2) 生产环境的安全隐患 由于 DevTools 可能暴露远程调试接口,默认情况下不适合用于生产环境。因此,在打包发布至正式服务器前应移除或禁用 DevTools[^3]。 ##### (3) 文件监控失效 有时因操作系统限制或其他原因导致无法正常监听文件变动。此时可通过手动指定属性覆盖默认行为: ```properties spring.devtools.restart.poll-interval=1s spring.devtools.restartQuiet-period=500ms ``` 上述配置项分别控制轮询间隔时间和静默期长度[^4]。 --- #### 4. 替代方案 尽管 DevTools 是最常用的热部署手段之一,但也存在其他替代品可供选择: - **JRebel**: 商业化产品,提供更高效的类级替换机制而非简单的容器重启; - **Spring Loaded**: 开源项目,类似于 JRebel 的轻量版实现; - **DCEVM (Dynamic Code Evolution VM)**: 修改后的 HotSwap 技术扩展,允许变更方法体逻辑而不丢失状态数据。 每种工具有其适用场景,请根据实际需求权衡利弊后再做决定。 --- 问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值