對于開發和實施人員來說,也許大家經常會碰到這樣的對話:
實施工程師:系統有問題了,是哪里哪里(省略字若干+若干界面截圖)
開發工程師:不可能,我這邊還原了整個環境,包括數據庫、代碼和中間件……
實施工程師:這邊是weblogic,你那邊是?
開發工程師:我的是Tomcat,但Tomcat和weblogic的差異呢,不知道……
然后就沒有結果,因為我們的個人電腦真的無法或者難以承受weblogic或者websphere之重。
怎么辦呢,其實我們可以用遠程調試的方法:
三步配置遠程調試:
一、對于TOMCAT:
1、打開catalina.bat,并加入:
SET CATALINA_OPTS=-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5555
2、配置Eclipse,如下圖(此時Port與上面的address一致,是5555):

3、如果Tocat已經起來(注意,可能在另外的機器上),那點擊debug,即可進行與本地服務一樣的調試過程。
二、對于Weblogic:
1、打開startWebLogic.cmd,并調整執行java命令的地方:
%JAVA_HOME%\bin\java %JAVA_VM% %MEM_ARGS% %JAVA_OPTIONS% -Dweblogic.Name=%SERVER_NAME% -Dweblogic.ProductionModeEnabled=%PRODUCTION_MODE% -Djava.security.policy="%WL_HOME%\server\lib\weblogic.policy" weblogic.Server
調整為
@REM ORG : %JAVA_HOME%\bin\java %JAVA_VM% %MEM_ARGS% %JAVA_OPTIONS% -Dweblogic.Name=%SERVER_NAME% -Dweblogic.ProductionModeEnabled=%PRODUCTION_MODE% -Djava.security.policy="%WL_HOME%\server\lib\weblogic.policy" weblogic.Server
@REM Surport Remote Debug :
set JAVA_DEBUG=-Xdebug -Xnoagent -Xrunjdwp:transport=dt_Socket,address=4000,server=y,suspend=n
%JAVA_HOME%\bin\java %JAVA_VM% %JAVA_DEBUG% %MEM_ARGS% %JAVA_OPTIONS% -Dweblogic.Name=%SERVER_NAME% -Dweblogic.ProductionModeEnabled=%PRODUCTION_MODE% -Djava.security.policy="%WL_HOME%\server\lib\weblogic.policy" weblogic.Server
2、其他配置類似Tomcat,如下:

3、同樣,如果weblogic已經起來(注意,我上面的例子就是weblogic不在本機上,而在于另外的機器上),那點擊debug,即可進行與本地服務一樣的調試過程,如下:

大家也許會問:這樣調試會不會影響客戶使用?當然會影響,如果一旦hit了斷點,則整個應用會被掛起。那怎么樣才能盡可能的進行調試呢?方法還是有的:
1、如果是tomcat,重新復制一份tomcat,修改一下端口,然后起來后調試,此時整個環境都類似了,調試起來非常方便;
2、如果是weblogic,重新建立一個新的domain即可,互不干擾;
3、如果是websphere,呵呵,沒試過,留給大家的作業。
原理?好奇的人還會問,其實就是jdwp(Java(tm) Debug Wire Protocol),有興趣就google一下吧。