springboot项目本地联调线上环境

背景

在本地开发以及和前端联调时没有问题,但是项目发布了就出现各种问题,很让人费解,而线上环境的日志信息又不足或没有,无法及时定位问题,所以这里就介绍本地开发工具联调线上环境的方法.

这里是使用idea和线上是docker容器部署springboot项目的环境(非docker环境直接使用指定端口)

1.   打开idea


2.  启动docker


         注意这里需要映射的第一步指定的端口,idea是连接的宿主机(服务器)端口,在通过映射给docker的服务 (后续会分析一篇从零学习的docker文档)

3.  带参数启动项目 Java- jar 


4.    Idea启动连接


5.    线上测试



总结:缺点,若启动时没有预留这样的联调端口,则需要把服务器停止后在按上述启动才行,有没有不停止就可以联调的方法呢?


有.这里介绍

Arthas

Arthas是阿里巴巴开源出来的一个针对java的工具,主要是针对java的问题进行诊断。官网地址(下载安装请看这里):https://alibaba.github.io/arthas/index.html



1、启动Arthas

先找到需要排查的java进程(ps –ef|grep java //jps)

java -jar arthas-boot.jar XXX  #进程的PID

2.定位到需要排查class的classLoader

(这里可能需要排除代码是否与本地一致)

 jad *AuthorizeController (反编译字节码)

sc -d *DemoController | grep

classLoaderHash(获得classLoaderHash)

 3.本地把代码修改后,编译成字节码文件,然后拷贝到服务器上

       redefine-c [classLoaderHash] /opt/DemoController.class

       热更新成功

总结:

函数参数格式不能修改,只能修改函数内部的逻辑

不能增加类的函数或变量

函数必须能够退出,如果有函数在死循环中,无法执行更新类


综上所述:

第一种需要重启,且影响线上的请求,但是操作及其灵活

第二章不需要重启,更适合运行的服务,但是操作的空间比较小

你可能感兴趣的:(springboot项目本地联调线上环境)