1.保证本机的代码与Linux服务器上的代码一致,且网速稳定
2.在idea中添加并配置远程Tomcat-Remote
在Host与Post 分别填写远程Linux服务器的IP地址与项目访问端口
第二步配置很关键,在上图中的Post为Tomcat调试进出入端口,必须保证本机与服务器的此号端口有开启,端口号不一定是5005,但是必须是未被占用的端口,如过本机是Windows可以暂时关闭防火墙
3. 将调试信息拷贝到远程需要调试的tomcat/bin/catalina.sh文件中。
JAVA_OPTS="-agentlib:jdwp=transport=dt_socket,address=5005,suspend=n,server=y"
拷贝到catalina文件的上方即可
然后先在tomcat/bin目录下关闭Tomcat,再使用./catalina.sh run重启tomcat ,如果尝试能远程调试,则可省略以下步骤。
4.服务器Tomcat连接超时或者拒绝连接
4.1以上的catalina.sh中的拷贝字符串需要换
JAVA_OPTS="-Dcom.sun.management.jmxremote=
-Dcom.sun.management.jmxremote.port=1099
-Dcom.sun.management.jmxremote.rmi.port=1099
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
-Djava.rmi.server.hostname="
JAVA_OPTS="$JAVA_OPTS -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005"
export JAVA_OPTS
特定解析:
在网上我也搜了好多的教程,但是或多或少的都存在问题,不是连接不成功就是连接超时,其根本问题就是出在了1099端口上。最典型的问题就是
Error running 'TomcatRemote':
Unable to connect to the xx.xx.xx.xx:1099, reason:
java.rmi.ConnectException: Connection refused to host: xx.xx.xx.xx;
nested exception is: java.net.ConnectException: Connection timed out: connect
这个错误根本原因就是服务器的配置出了问题,jmx没有成功启动。
(需要保证1099端口是开启的)
4.2 修改Tomcat/conf下的server.xml
多项目时,调试端口可能会冲突,所以需要修改
5.重启Tomcat
以前tomcat用的启动方式是./startup.sh
而现在用的是caatalina.sh,就需要用catalina启动,具体命令如下
./catalina.sh run
但这样启动的话会导致当前终端被阻塞,并且关闭终端后无法继续后台运行
因此命令改为:
catalina.sh run > /dev/null 2>&1 &
其中“ > /dev/null 2>&1 &”是Linux中的命令:把标准输出和出错处理都放到回收站,这样就免得一大堆输出占领你的屏幕。