IDEA + WebLogic热部署

前言

将自己实现IDEA + WebLogic热部署的过程整理成文章,作为备忘以及供有需要的人参考


为什么需要热部署

众所周知,我们编写的java代码会被编译成class文件,JVM要创建一个类首先要加载该类,从对应的class文件加载。

当我们改变类的某段代码,重新编译后对应的class文件也会改变,这时重启应用新的改变就能被读取。

但是很多时候我们的应用是部署在TomcatWeblogic等服务器上的,每次改变代码后都需要重新部署以使改变生效,这无疑会花费大量时间

所以人们寻找一种改变代码后无需重新部署就可以让改变立刻生效的方法,也就是热部署


热部署原理

简单讲热部署就是动态的替换class文件

某个进程监控本地所有指定的class文件,一旦发现某个class产生变化,就将服务器中对应的class进行更新以使改变生效而无需重新部署

可是JVM怎么对某个class进行多次加载呢,其实JVM标识一个类是和这个类的类加载器一起,也就是说,即使同一个类,但由不同类加载器加载进来,JVM就认为它们是不同的

所以热部署的一种实现就是将相应的类和类加载器一起替换掉


过程

首先使用的是IDEA Ultimate版,使是Jrebel插件为我们执行监控和替换class文件的操作

  1. 安装好Jrebel后首先在IDEA的设置里找到Jrebel的配置,打开自动编译
    在这里插入图片描述

  2. IDEA左下角,为项目开启热部署
    IDEA + WebLogic热部署_第1张图片

  3. 删除已有部署
    IDEA + WebLogic热部署_第2张图片

  4. 创建WebLogic Server
    刚创建Server你会发现没有图中那么多选项,因为你首先要在Deployment面板中添加Artifact,如步骤5
    IDEA + WebLogic热部署_第3张图片

  5. 添加Artifact
    IDEA + WebLogic热部署_第4张图片

  6. 配置Jrebel Executor
    主要是指定配置文件位置,将之前在WebLogic配置的Server的Server Start中对应参数复制过来即可
    IDEA + WebLogic热部署_第5张图片

  7. 复制boot文件
    如果部署在Managed Server中,则需要将Admin Serverboot文件复制过来,其实里面包含的就是加密后的用户名和密码
    在这里插入图片描述

  8. 启动
    配置好热部署就无需手动在WebLogic的网页上启动Server,只需在IDEA中点一下Jrebel图标即可,当弹出403页面则启动成功
    在这里插入图片描述

  9. 测试类的热部署
    有时候我们需要把测试类也实时同步到服务器,但上面的操作却不会监测测试类的变动并同步

    因为Jrebel监测classes目录的变化,而测试类编译后存放在test-classes中,所以只需要改变测试类的输出路径就可以实现同步

    IDEA -> Project Structure
    IDEA + WebLogic热部署_第6张图片


你可能感兴趣的:(后端,杂项)