我們用 Eclipse 開發 Web 項目時,多會用某個外掛程式(如 MyEclipse) 來對 Tomcat 中的應用進行單步調試。而要調試 WAS 下的應用,MyEclipse 也是可以的,但在 MyEclipse 中啟動 WAS 比較慢,且需要在本地安裝一個 WAS。再有便捷點的方法是用 WSAD (Websphere Studio Application Developer) 或它的升級版 RAD (Rational Application Developer),它們內建了對 WAS 很好的支援,不過也需要本機安裝了 WAS,WSAD/RAD 肥大的身軀自是不必說。若要讓 WSAD/RAD 進行遠端偵錯,似乎還得在Server 上安裝個 IBM Agent Controller。
實際上 WAS 就支援遠端偵錯的設定,開啟它,你只需要用 Eclipse Debug 中的 Remote Java Application 功能串連到伺服器上相應連接埠即行。設定很簡單,這樣的辦法你甚至可以在閑時偷偷的調試一下生產環境的 WAS 應用以驗證測試環境難以/無法重現的問題。具體做法如下(WAS 5.x 和 6.x 下的操作基本相同):
一:配置 WAS,開啟調試服務
進到 WAS(或ND) 的管理主控台,在伺服器->應用程式伺服器中,點擊要啟用調試服務的應用伺服器,然後進入調試服務,勾選上啟動(指定當伺服器啟動時伺服器是否將嘗試啟動指定的服務。)。JVM 調試連接埠預設為 7777,注意該連接埠不能有衝突(如有多個應伺服器要啟用調試服務時,需要指定別的連接埠)。其他選項預設,或根據實際來設定。
確定、儲存後重啟應用伺服器,WAS Base 版需要回到作業系統下重啟,如果是在 ND 管理主控台下,可直接在頁面中重啟應用伺服器。
二:配置 Eclipse,使用遠端偵錯
Eclipse 的菜單 Run -> Open Debug Dialog 視窗中,右擊 Remote Java Application->New,在右方的 Conect 標籤頁中,選擇你要調試的 Project(即發布到 WAS 下啟用了調試服務的,在你的 Eclipse 中存在的項目),Host 填上 WAS 伺服器的 IP,Port 就是前面的 JVM 調試連接埠。其他兩個標籤頁 Source/Common 可留意下。
點擊 Debug 按鈕,這時候 Eclipse 即處理於偵聽 WAS 伺服器的 JVM 調試連接埠的狀態。
三:打上斷點,調試應用
在你的 Eclipse 中的項目(注意,該項目已部署到 WAS 上的) 要調試的程式碼中打上斷點,然後可以在網頁上瀏覽 WAS 上的該應用。當執行到所在斷點的程式碼時,Eclipse 就會停在該行上,讓你盡情的 F5/F6 的跳,像平時那樣 Watch/Inspect/Display運算式或變數。
其他缺點就是:
1)觀察不到控制台的輸出,還得看 WAS 的 SystemOut.log 檔案或記錄檔。
2)JSP 檔案無法調試,因為定位不到原碼,並且這種方式也不足以聰明。
3)代碼更新後,需手工把類檔案或 JSP 檔案拷到 WAS 的相應目錄下。
4)啟動了調試服務後,嚴重影響功能,通過滑鼠點擊就能感覺到,所以正式系統上完事後趕緊關了該功能。