Tomcat遠程調試

開發調試過程中,有些場景無法在本地完成,譬如調試微信開發相關功能。由於微信要求回調地址必須是認證過的域名,本地顯然無法滿足這個要求,所以遠程調試就可以派上用場。

Tomcat遠程調試的配置主要有兩種方式,一種基於JAVA_OPTS,另一種則是直接使用JPDA接口。

經典的OPTS配置如下:
JAVA_OPTS="$JAVA_OPTS -server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8787"

其中,-server指定server模式,transport模式爲socket通信,非阻塞,端口8787。

隨着大家對JVM的認識越來越深入,JPDA的方式逐漸替代了傳統的OPTS方式。

簡單說說JPDA。JPDA全稱是Java Platform Debugger Architecture,即java平臺調試體系,由三個相對獨立的模塊或者層次組成,這三個層次分別是JVMTI(Tool Interface),JDWP(調試協議)以及JDI(調試接口)。JVMTI是5.0之後推出,用來替代之前的JVMPI及JVMDI,三者關係示意圖如下。

Tomcat遠程調試

Tomcat遠程調試

JPDA方式遠程調試和OPTS的區別是,通過啓動參數(原生的支持)實現。

./catalina.sh jpda start

需要注意的是,JPDA的默認地址是“localhost:8000”, 需要將JPDA_ADDRESS進一步修改,在catalina.sh中,添加如下內容:

export JPDA_ADDRESS=8000

至此,我們就可以開始本地的服務器調試了。

以IDEA爲例,添加Remote應用:

Tomcat遠程調試

示例中我們修改了默認端口從8000到9081,這個需要確認服務端防火牆已開啓,所以在聯調前,telnet 端口是否開通。

最後,遠程調試,需要確保本地代碼和服務器的版本一致,否則會出現代碼錯位的情況,讓調試效果大打折扣。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章