配置Eclipse進行遠程調試



  
  爲了能在Eclipse中遠 程調試JBoss應用,需要以debug模式啓動JBoss服務器,這可以通過在批命令腳本文件bin/run中設置debug選項來實現。JBoss提 供的調試機制是基於Java平臺調試架構(JPDA)的。按以下方式設置JAVA_OPTS變量:
  
  set JAVA_OPTS= -Xdebug -Xnoagent  -Xrunjdwp:transport=dt_socket,address=8787, server=y, suspend=n %JAVA_OPTS%
  
  這些debug參數有:
   
  有關debug參數設置的詳細說明參見JPDA文檔。
  
  爲了演示Eclipse的遠程調試功能,需要在JBossServlet中拋出異常。爲此我們在JBossServlet.java中引入NullPointerException(空指針異常),把原先的代碼:
  
  out.println("Eclipse JBoss Debugging");
  
  改爲:
  
  String str=null;out.println(str.toString());
  
  接下來,爲該Eclipse項目的遠程調試進行設置。在Debug選項下拉條中選擇Debug選項,如圖11所示。
   
  圖11 Debug選項
  
  圖中顯示的是Debug屏。在該屏中選中Remote Java Application節點,右擊節點選擇New,如圖12所示。
   
  圖12 新的debug設置
  
   在Debug Configuration屏中爲Debug設置指定名字。選中要調試的項目,也就是此前在Eclipse IDE中創建的EclipseJBoss項目。爲Connection Type(連接類型)選擇默認值,在Connection Properties(連接屬性)中將Host指定爲localhost,將Port(端口)指定爲8787(JBoss服務器批命令腳本run中的端口 設定值)。點擊Apply按鈕將此遠程Java應用調試設置加入,如圖13所示。
   
  圖13 JBoss調試設置
  
   接下來,在JBossServlet.java文件中加入異常斷點。此前我們已在JBossServlet中引入了 NullPointerException異常。選擇Run -> Add Java Exception Breakpoint在該servlet類中加入斷點,如圖14所示。
   
  圖14 加入Java異常斷點
  
  在Add Java Exception Breakpoint屏中選擇NullPointerException,如圖15所示。NullPointerException斷點被加入到servlet類中。
   
  圖15 NullPointerException斷點
  
  如果servlet應用在JBoss服務器上運行時產生了NullPointerException異常,該應用就會被掛起,同時Eclipse IDE的Debug視圖中會顯示出該異常。
  
  遠程調試JBoss應用
  
   爲部署在JBoss服務器上的servlet示例應用配置好debug設置後,我們就可以在Eclipse IDE中調試servlet應用了。參照“用Eclipse開發一個JBoss應用”一節所說的方法,用build.xml文件對修改後(引入了 NullPointerException異常)的JBossServlet.class重新編譯,爲web應用生成新的webapp.war文件。在 run批命令腳本中設定調試選項,以debug模式啓動JBoss服務器。
  
  接下來,在Debug屏中選擇EclipseDebug作爲調試設置。點擊Debug按鈕將遠程調試器與JBoss服務器連接,如圖16所示。
   
  圖16 將遠程調試器連接到JBoss服務器上
  
  這樣Eclipse的遠程調試器就連接到了JBoss服務器上。選擇Debug Perspective按鈕切換到Eclipse的Debug視圖,在該視圖中顯示出遠程調試器已連接到本機的JBoss服務器上,端口號爲8787,如圖17所示。
   
  圖17 遠程調試器已連接到JBoss服務器上
  
   在瀏覽器中輸入URL地址http://localhost:8080/webapp/catalog來訪問JBoss服務器上的 JBossServlet,就像我們在Debug視圖中看到的那樣,servlet因拋出NullPointerException異常而被掛起。產生了 異常的那一行代碼被顯示出來,如圖18所示。
  
  圖18 JBoss服務器在產生NullPointerException處被掛起
  
  拋出異常的那一行是out.println(str.toString());。我們可以在Eclipse IDE的Run菜單中選擇不同的調試選項對該servlet應用進行調試。
  
  小結
  
  我們在Eclipse IDE中以遠程的方式調試了部署在JBoss服務器上的一個應用。只要將服務器設置成以debug模式啓動,我們就可以用這個方法調試部署在其它類型應用服務器(如Weblogic)上的應用。

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