jrebel 使用

来源:互联网 发布:新版淘宝不能指纹支付 编辑:程序博客网 时间:2024/05/23 15:40

很早就关注jrebel的使用,因为java开发免不了重启服务器,现在一般的服务器所支持的热启动都是不改变类结构的前提下,比如不能新增,修改,删除已有的方法,只能改变方法体的实现。基本上没有太大的意义。之前用过jrebel但是效果不是很理想,一方面自己的机器配置比较低内存有限,jrebel用起来之后还是比较占内存的,通常多用几次热部署之后就会导致class重新加载不成功。现在机器好了不少,jrebel 也出了新的5.2版本,所以试了下,效果还是挺不错的。

首先下载jrebel的jar文件,这个官网上有,无限制版网上也随处可以见。因为是使用IDEA,所以去下了idea的jrebel插件。


然后就是在idea的setting里设置jrebel jar文件的路径


ok,大环境配置好了,但是要想动态部署还有关键的一步,jrebel需要一个配置文件,并在classpath路径下能访问到,我通常放到maven工程的resource目录下。

在项目上右键,选择Generate rebel.xml


然后再选择你想放的目录,比如我就放到resource目录下面。刚生成的文件看起来是这样的


注意你的路径可能会不一样,这个是根据工程存放的目录来决定的。但是默认的文件是不行的,还需要做些配置。


需要加上classpath的配置,指向你class编译路径,这样当类变化的时候可以被jrebel感知到并自动加载。还需要将xml文件exclude掉,因为xml文件如果修改了就算重新加载了也没用,老老实实重启把。

这样配置之后重新通过maven打包,然后通过jrebel的插件启动服务器。


就是最后面的甲虫,这个代码会在启动的时候插入jrebel的脚本,可能启动会有异常日志,通常是方法找不到之类的,可以无视。启动好之后修改文件试试,修改好之后用Ctrl+Shift+F9 快捷键编译下,就会提示你这个类已经reload了,灰常爽。