前言
最近在对接微信公众号消息推送
的时候出现了一些问题需要调试,而我们配置消息推送使用的公网ip地址又是运营商专线网络,最后通过端口映射
将公网端口映射
到我们服务上部署的项目端口,所以调试起来非常麻烦,于是想到了远程调试来解决该问题。
准备工作
这里我创建了一个项目用于测试,实际使用时请替换成你需要远程调试的项目即可。下面提供主要的项目配置示例:
-
RemoteController
@RestController @RequestMapping("/remote") public class RemoteController { private final RemoteService remoteService; public RemoteController(RemoteService remoteService) { this.remoteService = remoteService; } @GetMapping("/test1") public String test1(@RequestParam("name") String name) { return remoteService.test1(name); } }
-
RemoteServiceImpl
@Service public class RemoteServiceImpl implements RemoteService { @Override public String test1(String name) { if (StringUtils.isEmpty(name)) { return ""; } if (name.contains("z")) { return "张三"; } if (name.contains("l")) { return "李四"; } return name; } }
-
application.yml
server: port: 18808
远程调试配置
- 选择需要修改的配置
- 自定义配置名称
- 关联远程JVM(保持默认即可)
- 通信协议(保持默认即可)
- IP地址
- 远程监听端口(建议不要与项目启动端口一致)
- JDK版本
- 远程服务器启动项目时的命令(建议提前复制下来保存)
- 需要启动的项目
注意不同版本的idea可能配置名称不一样,比如我这里是Remote JVM Debug
,而有的版本是Remote
启动项目
如何打包SpringBoot项目和上传到服务器这里就不做过多介绍了,操作步骤如下:
-
项目打包
-
上传项目jar包到服务器
-
配置Java环境
-
启动jar包
-
本地启动远程调试
开始调试
我在项目test1方法
中打了一个断点,然后浏览器访问192.168.79.100:18808/remote/test1?name=zs
即可进行远程调试
注意事项如下:
1、这里我使用的ip是虚拟机设置的静态ip,如果你使用的是云服务器,请替换成云服务器的ip
2、如果使用的是云服务器,请在安全组放行上述两个端口:监听端口和项目运行端口
3、无论你使用的是什么服务器运行项目,请在防火墙放行上述两个端口或直接关闭防火墙(不建议)
参考资料
本文参考资料如下: