1. 程式人生 > >resin4.0服務器遠程調試說明

resin4.0服務器遠程調試說明

version mage 名稱 3.1 接口 xml配置 dde server fault

技術分享圖片

1、開發環境介紹:

目前dev用resin 作為服務容器。服務調用之間過於復雜,要進行本地代碼調試過於復雜,甚至無法進行。但是可以通過jvm的遠程代碼調試來達到本地代碼調試的目的,步驟如下。

2、resin4(dev環境版本為resin4) 環境遠程服務搭建步驟:

//1.確定服務器上resin的版本。進入resin服務的bin目錄;例如pk服務的目錄是:/data/app/resin_pk/bin/ ,在服務部署的服務器上執行命令:
sh resin.sh version
//確認版本信息是4.0版本: Resin-4.0.27 (built Thu, 22 Mar 2012 06:14:10 PDT)
 
//2.先在遠程的resin修改conf(pk服務的conf目錄為:/data/app/resin_pk/conf)中resin.xml配置文件 在<server-default>標簽中添加 紅色字體的兩行

<server-default>

<!-- 在本行註釋下面添加JVM標簽 -->
<http address="*" port="9991"/>
<jvm-arg>-Xdebug</jvm-arg>
<jvm-arg>-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8889</jvm-arg>
</server-default>

//說明 :這兩行參數開啟了JVM的遠程debug模式,並將端口 8889作為遠程調試的端口

//3.以上配置完成以後重啟resin服務器,進入resin的bin目錄執行: 
sh resin.sh stop  
sh resin.sh start
//說明,此處用restart命令應該也可以,我當時用restart後沒有查到端口號,可能是查詢太早了,沒有等服務完全啟動。
//4.查看端口號,確認遠程端口開啟成功。如果能查詢到內容證明端口開啟成功,查詢不到則沒有開啟成功。註意,要等服務完全啟動後再查詢,否則可能查詢不到。
netstat -an | grep 8889
 
//6.需要運維同學配置nginx端口轉發,將應用部署服務器的8889端口映射到外網端口(因為外網無法直接訪問dev服務器)
nginx配置完畢後,後向運維同學詢問nginx外網對應的ip和端口號。
//7.在本地的mac電腦上執行telnet命令查詢nginx端口是否轉發成功。例如nginx對外的ip地址是:54.223.118.178 應用對外映射的端口號是:8889
telnet 54.223.118.178 8889
//如圖則開啟成功,否則nginx配置的轉發失敗,找運維確認。

技術分享圖片

3、在idea中配置遠程的ip和端口,並選定應用進行調試:

run選項中→ Edit Configuration→ 左上角 + 號 → 選擇新建remote 選項

技術分享圖片

技術分享圖片

最後給遠程服務取一個名字,填寫nginx的ip和端口,選擇遠程部署的項目並保存,這時就大功告成了。

技術分享圖片

調試使用:只需要選擇剛才新建的名稱,點擊debug,選擇在對應的方法打上斷點;服務在調用遠程dev上的接口時就會進入本地的idea代碼。

技術分享圖片

最後確定遠程debug服務是否成功,點擊debug運行後出現類似以下內容說明遠程debug連接成功。

技術分享圖片

4、JVM遠程調試整體架構圖:

技術分享圖片

resin4.0服務器遠程調試說明