我有一个ubuntu服务器,我的应用程序在tomcat7中运行。现在我有两种远程调试方法,作为一个学习者,我想知道两者之间的技术差异是什么,或者它们是否相同,我错过了什么?
方法1 :打开文件 / etc / default / tomcat7
#启用远程调试取消注释以下行。
#然后,您就可以在端口8000上使用java调试器了 #JAVA_OPTS =“$ {JAVA_OPTS} -Xdebug Xrunjdwp:运输= dt_socket,地址= 8000,服务器= Y,暂停= n“的
方法2 :
导出CATALINA_HOME = / usr / share / tomcat7 export CATALINA_BASE = / var / lib / tomcat7 / export JPDA_ADDRESS = 8090导出 JRE_HOME = / usr / lib中/ JVM / java的1.7.0-的openjdk-AMD64
现在去tomcat主目录/ usr / share / tomcat7 / bin并编写 以下行在调试模式下运行tomcat。
#。/ catalina.sh jpda start
我遇到的方法2的另一个问题是,当我启动jpda并且我的tomcat服务也在端口80上运行时,我得到连接拒绝,当我停止tomcat时我能够远程连接到8090。那是什么意思?
答案 0 :(得分:1)
从技术上讲,它们是相同的,指的是catalina.sh:
if [ "$1" = "jpda" ] ; then
if [ -z "$JPDA_TRANSPORT" ]; then
JPDA_TRANSPORT="dt_socket"
fi
if [ -z "$JPDA_ADDRESS" ]; then
JPDA_ADDRESS="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="$CATALINA_OPTS $JPDA_OPTS"
shift
fi
关于第二个问题,当通过shutdown.sh
停止tomcat时,jpda端口仍在监听,您可以使用linux命令netstat
或lsof
进行检查。我遇到了同样的问题,并且不确定为什么tomcat不处理它。
端口80上的连接拒绝错误可能与jpda选项无关。 jdwp
是一个JVM标志,不仅是tomcat,还有其他任何java应用程序都可以使用它。