今天把写好的项目部署到云端环境,小bug不断,所以就需要使用idea通过remote tomcat部署到服务器端的tomcat进行断点调试。
基本步骤就不介绍了,网上很多这样的博客,比如 这一篇 ,但是要注意的是,该博客中提到的以下关于 CATALINA_OPTS 的配置
CATALINA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=xxx,suspend=n,server=y"
好像只能实现远程部署,并不能进行断点调试,至少我在调试过程中单独靠这个配置是不能捕获断点的,在查看了更多的博客之后,
看到了这一篇博客 idea连接远程tomcat ,该博客中提到应做如下配置:
CATALINA_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"
其中jmxremote.port的端口默认是1099,可以更改为其他端口,但是防火墙要记得开放相应的端口(ps. 以上两段配置可以合并,在第一段的 "server=y" 后面追加一个空格,然后将第二段配置粘贴进去即可)
做完以上配置后,我在idea开始进行调试,但是idea报了一个 “Unable to connect to the xx.xx.xx.xx:1099”的错误,导致项目虽然成功远程部署,但是仍然不能调试
com.intellij.execution.ExecutionException: Unable to connect to the xx.xx.xx.xx:1099, reason: java.rmi.ConnectException: Connection refused to host: xx.xx.xx.xx;
....
原因是 CATALINA_OPTS 中除了 jmxremote.port 以外还需要添加一个 jmxremote.rmi.port 的属性
-Dcom.sun.management.jmxremote.rmi.port=1099
该属性一般和 jmxremote.port 一致,全部添加完毕之后重启 tomcat ,通过idea将项目远程部署到服务器之后,成功捕获到断点