通过JRebel进行远程热部署
本文中使用的IDE为IDEA,版本IntelliJ IDEA 2017.1.6,JRebel版本为7.1.6。其他版本
的使用和配置情况可能有所差异,请大家注意。
IDEA中进行基本配置
- 首先在IDEA中打开JRebel的配置页面,如下图:
- 点开以后可以看到如下图显示的配置:
- 选择目标环境如下图,这里我们以tomcat作为容器为例,其他的类似:
- 这里我们可以看到,插件已经很好的提示了该如何在服务器侧进行配置以方便使用JRebel。
服务端配置
- 按照步骤一步一步来,这里可以复制命令:
提示
:第一个这里的JRebel服务端需要的文件,本人实验时候,下载龟速,挂上代理直接起飞。可以现在本地下好,直接上传服务器。如下图:
上传、解压后的状态:
蓝色文件夹中的文件就是服务端需要的文件了。 - 首先,进入tomcat目录中,具体看服务器环境,然后在
bin
下创建启动脚本:
将之前步骤提示的脚本内容粘贴进去:
注意
:上图中两个圈起来的地方,第一个是之前jrebel-stable-nosetup.zip
文件解压的目录,后边的配置是jrebel服务监听的端口号。然后保存文件退出。别忘了给文件加执行权限
,同时确保catalina.sh
也有可执行权限:
- 运行脚本启动程序
./catalina-jrebel.sh start
。
项目文件配置
- 点击这个链接查看项目文件的配置说明(同样得挂代理,否则龟速),里面详细说明了不同的项目应该如何配置项目中的文件,从而使用JRebel远程热部署。:
具体配置细节感兴趣的可以详细查看,这里直接找到针对
gradle
项目中配置有多个子模块的场景进行的配置,可以最大程度满足项目的需求,如下图:
懒得自己看的同学可以直接拿走,添加到根目录下的build.gradle
文件中即可。改配置中会针对子模块里面的jar
和war
任务自动执行前置任务,从而在jar包和war包中生成jrebel需要的xml配置文件。如果生产环境中不希望存在该文件可以另行处理。buildscript { repositories { mavenCentral() } dependencies { classpath "org.zeroturnaround:gradle-jrebel-plugin:1.1.7" } } allprojects { project -> plugins.withId('java') { project.apply plugin: 'org.zeroturnaround.gradle.jrebel' def jarTask = project.tasks.findByName('jar') if (jarTask) { jarTask.dependsOn(generateRebel) } def warTask = project.tasks.findByName('war') if (warTask) { warTask.dependsOn(generateRebel) } } }
上边配置好了以后,回到JRebel的配置页,找到远程服务器配置的标签:
添加一个远程服务器,其中Server name
为项目名称,对应到webapps
中的文件夹,即XXX.war
中的XXX
。Server URL*
对应的是服务器的IP和端口号。如果设置类JRebel服务端认证,需要勾选Server authentication
,并输入密码。使用下面的命令可以设置JRebel服务端的密码。java -jar jrebel.jar -set-remote-password <NewPassword>
如果HTTP的服务需要认证,即tomcat设置了访问密码,需要勾选
HTTP Basic authentication
,并对应输入用户名、密码。
上边的都搞好了,基本就成功了。首先需要使用gradle中的
war
任务将war包打好,放到服务器的tomcat目录下的webapp
中。然后找到JRebel配置的项目栏,如下图:
选中要进行热部署的项目,打上勾。
点击按钮将最新的文件推送到服务端。
远程调试
待补充