先说一下,我的远程服务器是 在 阿里云上的 Centos 7 。
关于在tomcat的java程序远程调试,网上很多人只是简单的说 在tomcat的bin文件夹下,在catalina.sh 文件中添加如下配置:
CATALINA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n"
注意上面的代码不要换行。
然后说就可以远程调试了。
我的人品没有那么好,添加了上面那句话后,打开MyEclipse的远程调试,出现如下错误。
执行telnet 命令,发现端口不通。
网上查资料,发现阿里云除了常用的端口会默认开放,其他端口需要自己设置开放。
以8000端口为例,打开 https://ecs.console.aliyun.com/#/home ,
点击图中安全组按钮,进入后选择安全组,如图
点击更多-> 配置规则,然后进行配置规则。
点击右上角的 添加 安全组规则, 我把四个方向挨个添加了一遍。
然后我就以为这样就ok了,欢天喜地的在我的电脑上执行 telnet 命令, 发现还是不通。
没有办法,在linux下,执行 netstat -ntlp ,得到结果如下:
tcp 0 127.0.0.1:8000 0.0.0.0:* LISTEN 5130/java
也就是说 只能 是 127.0.0.1 才能监听8000端口。
我希望能够全网监听8000端口, 在网上找遍了资料,没有发现解决的办法。
只好自己想办法。打开 catalina.sh文件,由于 地址和端口 是 JPDA_ADDRESS定义的,于是全文搜索,
发现一段代码:
if [ "$1" = "jpda" ] ; then
if [ -z "$JPDA_TRANSPORT" ]; then
JPDA_TRANSPORT="dt_socket"
fi
if [ -z "$JPDA_ADDRESS" ]; then
JPDA_ADDRESS="localhost:8000"
fi
if [ -z "$JPDA_SUSPEND" ]; then
JPDA_SUSPEND="n"
fi
if [ -z "$JPDA_OPTS" ]; then
JPDA_OPTS="-agentlib:jdwp=transport=$JPDA_TRANSPORT,address=$JPDA_ADDRESS,server=y,suspend=$JPDA_SUSPEND"
fi
CATALINA_OPTS="$JPDA_OPTS $CATALINA_OPTS"
shift
fi
将 上面的JPDA_ADDRESS="localhost:8000" 修改为 JPDA_ADDRESS="0.0.0.0:8000"
保存。
停止tomcat, 然后执行 ./catalina.sh jpda start 命令,启动 tomcat的 调试模式。
然后在自己电脑上在MyEclipse中点击debug图标旁边的下拉按钮,选择debug configuration,出现下图。选择remote java application,添加 对应的debug配置
添加完后,点击apply, 点击图中的debug按钮,就可以开始愉快的远程调试了。。。。。
转载请注明出处