首页 Alibaba Cloud Toolkit 运维应用 应用观测器(公测中) 使用应用观测器热部署组件快速验证修复方案

使用应用观测器热部署组件快速验证修复方案

热更新(HotSwap)可以在 Java 程序运行时,更新部分 class 文件,而无需重启应用。应用观测器的热部署组件支持一键将编辑器中修改的 Java 源码快速编译,并更新到远端应用服务中,免去构建、打包和重部署的过程,帮助开发者快速验证修复方案的有效性。

适用场景

  • 将编辑器内修改的 Java 源代码更新到远端应用里,快速验证修复方法的有效性,而免去耗时的构建、集成和部署过程;

  • 对于本地无法搭建运行环境的应用,可以结合应用观测和热部署功能实现远程调试和修复验证。

前提条件

  • 部署的目标主机必须安装 JDK 且必须存在 ${JAVA_HOME}/lib/tools.jar 文件;

  • 本地可以通过 SSH 连上目标应用所在的目标主机(暂不支持跳板机);

  • 启动 Java 进程的用户和 SSH 远程连接的用户需要保证一致;

  • 更新至 Alibaba Cloud Toolkit for IDEA 2021.12.2 之后的版本,且需要选择 SSHj 作为 SSH 客户端。

使用步骤

1. 进行热部署,首先需要连接目标主机和目标进程,有两种方法可以唤出建立连接对话框。

  • 方法一

在未连接的情况下右击源码文件后,选择“热部署”(如果已经建立连接,则会热部署当前文件),通过本方法建立连接后,会直接提示是否热部署唤出菜单的文件。

菜单
  • 方法二:

可以在应用观测器窗口中选择“热部署”标签页后,点击“连接进程”按钮。

image

2. 选择目标主机和目标进程后,点击连接。

3. 建立连接后,在想要热部署的源码文件上右击,选择“热部署”。

4. 部署成功的文件会显示在热部署工具窗口下方,点击名称可以跳转到对应源码文件,点击右侧按钮还原对应文件的全部修改。

image

不适用热部署的情况

  • 类的继承关系、接口不能改变,包括添加、删除、修改或改变先后顺序等;

  • 不能添加、删除、修改类字段、以及字段的访问控制符;

  • 不能修改类字段的排列顺序;

  • 不能增加、修改或删除方法签名、访问控制符,可以添加或删除 private static 或 private (static) final 方法;

  • Open JDK(jdk8u74-b02)之前的版本不能热部署包含 lambda 表达式的源码文件;

  • Open JDK(jdk8u74-b02)之后的版本热部署时,不能改变 lambda 表达式在源码文件中出现的顺序;

  • 可以添加、删除或修改内部类,但要注意不要改变内部类首次被调用的顺序;

  • 不能热部署增加、删除或修改闭包的源码文件。

说明

后续正式版本将能够自动检测不能热部署的情况,并作出对应提示。

注意事项

  • 热部署后,该源码文件中对应的应用观测点将无法捕获新的数据,需要重新添加;

  • 热部署无法影响运行中的方法;

  • 多人协作时,针对同一个文件的热部署会相互覆盖;

  • 调试完成后请重新部署服务;

  • 热部署编译使用 IntelliJ 项目配置中的 JDK,不使用服务器、编译机(若有)JVM 实例。

FAQ

1.是否可以多人一起使用该插件对同一服务热部署?

答:可以,但应避免多人对同一文件同时热部署,防止热部署代码互相覆盖导致版本混乱。

2.和 Arthas 一起使用会冲突吗?

答:本插件使用 Arthas 完成 retransform,所以 retransform 不会冲突。如果想要同时使用本插件和 Arthas,需要保证先启动插件并连接目标主机,然后查找 Arthas 监听的 Telnet 和 HTTP 端口号,并以这两个端口号启动 Arthas。

联系我们

Alibaba Cloud Toolkit(应用观测器)钉钉用户交流群(群号:34965379)

群二维码
阿里云首页 Alibaba Cloud Toolkit 相关技术圈