文章目录

前言&需求描述1. 宝塔部署后端项目1.1 项目准备1.2 服务器准备1.3 项目启动

2. IDEA 远程 debug2.1 IDEA 编辑启动项2.2 服务器带参启动2.3 debug 演示

3. 补充与总结3.1 补充3.2 总结

宝塔部署项目 与 IDEA 远程debug 实战

前言&需求描述

本文记录个人工作中遇到的一个需求与解决方案,希望能帮助到有类似需求的读者。

需求描述 公司某块业务需要接收来自第三方API的请求。但是整个业务相对比较复杂,第三方API的一些特性还需要进一步测试,因此需要在不动现有业务代码的情况下,抽时间对这块业务进行预研。包括:触发第三方API请求的方法,第三方API请求的结构。

条件限制:

时间,需要在既定的较短时间内完成预研并有所产出现阶段难以借用公司代码进行调试,即便切了本地分支,也无法通过本地地址接收来自第三方API的请求。资源比较紧缺,暂时无法借用公司服务器资源单独部署一个专门用于预研的分支,现阶段也没这个必要。

于是,第一时间我的构想是:

解决思路构想

快速搭建一个后端项目,快速部署到服务器通过远程debug的方式,验证第三方API调用

根据上述解决思路,想着以最快最方便的方式搭建好并部署,采用图形化的宝塔面板部署;IDEA 远程debug, 因此本文学习目标如下:

学习目标

学习宝塔部署后端项目学习远程debug

1. 宝塔部署后端项目

1.1 项目准备

快速创建一个Maven项目,并引入所需依赖,配置跨域,本地测试启动成功即可。

其中,所需依赖、部分代码: 主要依赖 fast-json ,用于快速测试接收第三方API的请求与返回结果

com.alibaba

fastjson

1.2.73

@Controller

@CrossOrigin(origins = "*", maxAge = 3600)

public class BasicController {

@PostMapping("/api/accept")

public Object handleExternalRequest(@RequestBody String requestData) {

String response = "请求已接收:" + requestData;

System.out.println(response);

return JSON.parse(response);

}

}

然后就是项目打包。借助 IDEA 工具,如截图所示:

1.2 服务器准备

我们首先要准备一个服务器,并事先安装好宝塔面板。现在一般的云服务器都提供初始的宝塔面板安装,本文这里就不赘述。

有了宝塔之后,在宝塔面板上传我们打包好的项目文件。目录随意,但咱最好稍微记一下,呆会会用到:

1.3 项目启动

我们可以使用宝塔面板提供的项目管理启动 Java 项目,图形化界面非常方便,也可以在终端使用命令行。

赶时间,我借宝塔把文件上传上去之后,用终端启动项目:

java -jar [jar_name]

这里jar_name是咱们的jar包名了

启动完成就可以关掉了,我们接下来要使用的是IDEA 远程debug, 要添加参数。

2. IDEA 远程 debug

2.1 IDEA 编辑启动项

如图所示,在我们平时点击 IDEA 启动/debug 的位置找到edit, 即Run/Debug Configurations ,进入,参考如下截图配置:

将生成的参数CV 下来,例如我这里是:

-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,

address=5005

2.2 服务器带参启动

服务器带参启动之前,先确保服务器防火墙开放了这个端口,例如我这里是 5005。 另外要十分注意的是,本地代码需要与远程一致。至少是需要 debug 的模块是一致的。

服务器键入如下命令启动

java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -jar [jar_name]

如果不需要频繁修改代码重新上传的话,使用后台启动:

nohup java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -jar [jar_name]

2.3 debug 演示

如图所示,成功进入断点:

3. 补充与总结

3.1 补充

本文是基于一个实际的需求记录的解决过程,采用的是远程debug的方式。但实际上,我们也可以反过来,将自己本地机器配置内网穿透,通过公网ip,接收来自第三方API的请求并在自己本地debug。这种方式舒服得多,但风险也是对等的,将自己甚至内网的IP桥接到公网并暴露了。

若遇到类似需求,读者酌情选用远程 Debug 与 内网穿透

3.2 总结

通过本文我个人遇到的需求,我们一起学习了:

宝塔面板上传文件,图形化操作部署 或者 命令行让Java 后端项目跑起来IDEA 远程 debug

希望本文有一定的参考价值,帮助到有类似需求的同学。

文章链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: