<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    一葉笑天
    雄關(guān)漫道真如鐵, 而今邁步從頭越。 從頭越, 蒼山如海, 殘陽如血。
    posts - 73,comments - 7,trackbacks - 0
      翻譯文章網(wǎng)址:http://www.jacoozi.com/index.php?option=com_content&task=view&id=119&Itemid=134

    試圖修復(fù)服務(wù)器端的Java問題,花費(fèi)大量時間獲取問題源的經(jīng)歷不知道發(fā)生了多少次?調(diào)試器可以顯著地縮短錯誤發(fā)現(xiàn)時間而且使調(diào)試過程更加變得享受。這篇文章將探索如何在Eclipse中使用遠(yuǎn)程調(diào)試器。

    文章內(nèi)容:

    Java調(diào)試器

    調(diào)試Weblogic

    調(diào)試IBM WebSphere 5.x/6.x

    調(diào)試JBoss

    JBoss中熱交換代碼

    調(diào)試Tomcat

    調(diào)試JSP頁面

    調(diào)試器驗證

    參考

    系統(tǒng)信息

    Java調(diào)試器

    Java調(diào)試器(jdb)是一個動態(tài)的,可控的,基于任務(wù)的調(diào)試工具。它幫助找到并修復(fù)本地的和服務(wù)器端的Java語言的臭蟲。為了在J2EE應(yīng)用服務(wù)器中使用jdb,首先必須讓eclipse中的調(diào)試成為可用,而且將通過JPDA端口(默認(rèn)端口是1044)的調(diào)試和服務(wù)器關(guān)聯(lián)在一起。

    J2EE服務(wù)器缺省的JPDA選項如下:

    -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=1044

    Jdb參數(shù)指定調(diào)試器操作方式。例如transport=dt_socket告訴JVM調(diào)試器將會通過socket連接,然而address=1044通知端口號是1044.類似地,如果你設(shè)置suspend=y,JVM將會以掛起模式(suspended mode)啟動,保持掛起狀態(tài)直到調(diào)試器關(guān)聯(lián)上它。如果想一啟動JVM就想啟動調(diào)試,那么這將是有幫助的。

    調(diào)試Weblogic

    調(diào)試Weblogic和調(diào)試其他Java遠(yuǎn)程應(yīng)用沒有什么區(qū)別。需要確保啟動Weblogic時設(shè)置了必須的調(diào)試參數(shù),而且連接了調(diào)試器。就Weblogic8.1來說,需要增加下列參數(shù)在啟動腳本中。Weblogic提供多個啟動腳本(*.sh*.cmd),腳本位置在BEA_HOME/weblogic81/server/bin目錄下。

    1.      找到startWSL.cmd并且增加下列變量DEBUG_OPTS:

    set DEBUG_OPTS = -Xdebug -Xrunjdwp:transport= dt_socket,address=1044,server=y,suspend=n

    2.      接下來,插入新變量在Weblogic啟動命令中,放在"%JAVA_HOME%\bin\java"后和其他參數(shù)前。

    3.      啟動腳本類似于下面的腳本:

    "%JAVA_HOME%\bin\java" %DEBUG_OPTS% %JAVA_VM% %MEM_ARGS% %JAVA_OPTIONS%-Dweblogic.Name=%SERVER_NAME% -Dweblogic.management.username= %WLS_USER%-Dweblogic.management.password= %WLS_PW% -Dweblogic.management.server= %ADMIN_URL%-Dweblogic.ProductionModeEnabled= %PRODUCTION_MODE%-Djava.security.policy= "%WL_HOME%\server\lib\weblogic.policy" weblogic.Server

     

    調(diào)試IBM WebSphere 5.x/6.x

    1.      打開WebSphere 5.X/6.X控制臺

    2.      打開Servers | Application Servers | [SERVERNAME] | Process Definition | Java Virtual Machine

    3.      注冊Debug Mode

    4.      Debug arguments域中編輯參數(shù)。可以粘貼下面的的代碼,使用相同的1044端口從eclipse調(diào)試:

    -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=1044

    調(diào)試JBoss

    除了需要修改JBOSS_HOME/bin下的run.bat/run.sh外,其他和WebLogic相同。

    Linux用戶可以看到類似于如下的配置:

    $ cd /var/jboss4/bin

     $ sh ./run.sh

     =========================================================================

     

     JBoss Bootstrap Environment

     

     JBOSS_HOME: /var/jboss4

     

     JAVA: /usr/java/j2sdk1.4.2_06/bin/java

     

     JAVA_OPTS: -server -Xms128m -Xmx128m -Dprogram.name=run.sh

     

     DEBUG_OPTS = -Xdebug -Xrunjdwp:transport= dt_socket,address=1044,server=y,suspend=n

     

     CLASSPATH: /var/jboss4/bin/run.jar:/usr/java/j2sdk1.4.2_06/lib/tools.jar

     

     =========================================================================

    JBoss中的熱交換代碼(Hot Swapping Code)

    假如JBoss根目錄在C:\JBoss,應(yīng)用程序的classpathC:\classes\myapp。通過設(shè)置這個目錄為項目輸出目錄來告訴Eclipse編譯應(yīng)用程序到這個目錄下。這樣基本上可以工作了,但是有點隱患。

    如果每次都使用Ant腳本來build-clean,或許想確保輸出目錄的內(nèi)容不要偶然地被Eclipse清除掉。由于Eclipse有項目的清除功能,這種功能能容易重?fù)粽麄€目錄從而僅僅得到類文件。為此,為了保持Ant生成的文件和Eclipse將生成的*.class文件在一起,你必須告訴Eclipse你的輸出目錄。

    1.      首先設(shè)置Java項目輸出目錄。假設(shè)JBoss應(yīng)用程序的classpathEclipse工作空間之外,這樣設(shè)置一個鏈接的目錄將是個不錯的選擇。

    2.      打開File | New | Folder

    3.      輸入classes作為目錄名字,點擊Advanced,指定新目錄為C:\classes\myapp

    4.      在項目屬性頁,修改輸出目錄為新創(chuàng)建的classes目錄。點擊Project | Properties | Java Build Path,在Default output foder中寫入如下值。

    5.      打開Window | Preferences... | General | Workspace,選中Build automatically

    6.      最后,告訴Eclipse不要每次編譯項目的時候刪除輸出目錄的其他文件。依然在Preferences中打開Java | Compiler | Building,不要選中Scrub output folders when cleaning projects。這就是說,現(xiàn)在每次你保存Java文件,Eclipse會重新編譯它而且JBoss也會重新加載它。

    調(diào)試Tomcat

    調(diào)試Tomcat非常類似于WeblogicJBoss,但是需要修改TOMCAT_HOME/bin下的catalina.bat/catalina.sh文件。

    Tomcat是一個特殊的情況,因為它能夠調(diào)試和發(fā)布置換熱代碼(hot code)

    Eclipse中使用Sysdeo Tomcat Plugin

    SysdeoEclipse下小而強(qiáng)大的Tomcat插件。和其他插件一起使用Sysdeo將會讓你調(diào)試Tomcat和重新加載上下文。

    1.      首先從Sysdeo網(wǎng)站下載插件

    2.      解壓文件到ECLIPSE_HOME/plugins目錄

    3.      啟動Eclipse,打開Window | Preferences... | Tomcat.

    4.      在插件參數(shù)頁,指定Tomcat版本和主目錄。在Tomcat中有兩種聲明上下文的方式。比較新的方式是在TOMCAT_HOME/conf/Localhost下創(chuàng)建上下文文件。在Preferences | Tomcat | Context declaration mode下選擇Context files,設(shè)置Context files為自動選擇(Tomcat 5.5.12)

    5.      關(guān)閉Preferences。打開任意一個透視圖,將能看到工具欄上3cat按鈕。啟動Tomcat,點擊第一個圖標(biāo)。這將創(chuàng)建一個新服務(wù)器進(jìn)程,Eclipse調(diào)試器將會自動附加上去。調(diào)試模式可以通過Preferences頁來修改。

    6.      如果打算調(diào)試代碼,也可以增加項目到Tomcat源和classpath查找路徑。需要關(guān)注的一點,就是插件將會改變Tomcat輸出到Eclipse控制臺。另一個重要的事情就是附加或者預(yù)先將JAR文件放到classpath或者傳遞JVM參數(shù)到啟動器。這些可以在插件參數(shù)頁上設(shè)置。

    配置可重新加載的Tomcat上下文

    如果你無論如何也不想使用Sysdeo,那么也可以很容易的調(diào)試Tomcat

    1. 首先為應(yīng)用創(chuàng)建一個新的Tomcat上下文,打開TOMCAT_HOME\conf\Catalina\localhost,創(chuàng)建一個新文件,例如myapp.xml。這將成為你url的一部分,因此如果你要訪問你的程序,你可以輸入http://localhost:8080/myapp
    2. 輸入下面的內(nèi)容在myapp.xml
    3. <Context docBase="c:/eclipse_workspace/myapp/WebRoot" path="/HelloWorld"/

    假設(shè)你在c:/eclipse_workspace/myapp/WebRoot中有一個包含WEB-INFweb應(yīng)用

    1. 創(chuàng)建兩個環(huán)境變量:
    2. C:\>set JDPA_ADDRESS=1044
    3. C:\>set JDPA_TRANSPORT=dt_socket
    4. 現(xiàn)在可以用下面的調(diào)試參數(shù)來啟動Tomcat
    5. C:\Tomcat-5.5.12\bin\>catalina jdpa start
    6. 使用Eclipse通過1044來連接Tomcat

    Tomcat中熱交換代碼和自動上下文重載

    在一些情況下,調(diào)試需要包含一些在變化的類,當(dāng)然希望調(diào)試器用的是最新的變動代碼而且準(zhǔn)確無誤的重新加載它們。這是最正常的情況了,但是不是總都這樣。為了重新加載上下文環(huán)境,你必須定義上下文環(huán)境為reloadable

    打開myapp.xml修改它:

    <Context docBase="c:/eclipse_workspace/myapp/WebRoot" path="/HelloWorld" reloadable="true"/>

    現(xiàn)在上下文將會在每次改變?nèi)魏?/span>Java文件的時候都會重載。注意加載時需要花費(fèi)一些時間的,尤其如果應(yīng)用程序比較大的話。類似的,如果你有比較復(fù)雜的啟動servlet,你可能希望讓自動重載無效,因為即使是最小的變動都會導(dǎo)致整個環(huán)境重新加載。

    調(diào)試JSP頁面

    Eclipse中調(diào)試JSP,可以通過好幾種方式。最簡單的方法就是使用一些商業(yè)插件用于在建支持JSP調(diào)試。這樣的插件有MyEclipse和另外一種Nitrox。除了提供JSP調(diào)試外,這些商業(yè)插件還提供很多其他功能,例如數(shù)據(jù)庫資源管理器,XML編輯器,UMLERD圖等等。這些插件的副作用是環(huán)境變得越來越大,反應(yīng)也會變慢。從我的經(jīng)歷來看,這些插件導(dǎo)致Eclipse相當(dāng)?shù)穆矣袝r環(huán)境變得很不穩(wěn)定。類似的,這些耗費(fèi)大內(nèi)存的插件是導(dǎo)致頻繁內(nèi)存溢出異常和隨后的環(huán)境崩潰的原因。長話短說,我最終決定還是使用最基本的。當(dāng)我意識到調(diào)試JSP可以不用任何插件時,建立這個過程稍微多會花些時間,但是回報的卻是快速和穩(wěn)定的環(huán)境。

    在知道了JSP被轉(zhuǎn)化為Java文件后,調(diào)試JSP變得很容易。這個轉(zhuǎn)化發(fā)生在運(yùn)行時,JSP只存在在它們被javac編譯前。在這個例子中我將使用JBoss,然而可以使用類似的技術(shù)到其他服務(wù)器上。由于JBoss使用jasperjavac來生成和編譯Java,因此首先創(chuàng)建一個用于Java工程,其源代碼指向JBoss JSP輸出目錄。這個工程和普通的Java工程有一個顯著的區(qū)別:源目錄的大小將會不斷的變化,主要是因為JBosss要重新編譯JSP

    跟隨下面的步驟來建立EclipseJSP調(diào)試:

    1.      啟動JBoss

    2.      定位到JBoss編譯JSP的地方。這主要依賴于你發(fā)布是WAR包和你的真實的服務(wù)器配置,你可以找到類似于下面的位置:JBOSS_HOME\server\j2ee\work\jboss.web\localhost\myapp

    3.      啟動Eclipse,打開File | New | Other....選擇Java Project點擊Next

    4.      New Java Project頁,輸入項目名稱,例如my_jsp.其他想保持缺省狀態(tài),點擊Finish

    5.      創(chuàng)建一個新目錄鏈接到JBOSS_HOME\server\j2ee\work\jboss.web\localhost\myapp。這個目錄將會在以后成為項目源代碼目錄

    6.      使src成為源代碼目錄。打開File | New | Source Folder

    7.      點擊Browse而且選擇src,點擊Finish。保持和下面的對話框一致。

    8.      在上面的對話框里,修改項目輸出目錄為src

    9.      Eclipse將會試圖編譯my_jsp,但是將會看到許多問題。為了項目能夠正確編譯兩個主要問題必須解決。首先,jasper庫必須加入項目的classpath中,第二必須指出Java代碼工程my_java_code(假設(shè)分離Java項目主機(jī)域類和servlet)。

    10.  打開Project properties,增加下面的庫到classpath

    11.  JBOSS_HOME/server/j2ee/deploy/jbossweb-tomcat50.sar/jasper-runtime.jar

    12.  JBOSS_HOME/server/j2ee/lib/javax.servlet.jsp.jar

    13.  而且,點擊Project頁增加my_java_codeclasspath。現(xiàn)在my_jsp工程classpath如下所示:

    <?xml version="1.0" encoding="UTF-8"?>

    <classpath>

       <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>

       <classpathentry excluding="src/" kind="src" path=""/>

       <classpathentry kind="src" path="src"/>

       <classpathentry kind="lib" path="C:/jboss-4.0.1sp1/server/j2ee/deploy/jbossweb-tomcat50.sar/jasper-runtime.jar"/>

       <classpathentry kind="lib" path="C:/jboss-4.0.1sp1/server/j2ee/lib/javax.servlet.jsp.jar"/>

       <classpathentry combineaccessrules="false" kind="src" path="/my_java_code"/>

       <classpathentry kind="output" path="src"/>

    </classpath>

    14.  打開Project | Build Project。這次編譯應(yīng)該沒問題了。

    15.  啟動JBoss。使用Eclipse調(diào)試器開始調(diào)試會話

    16.  打開一個瀏覽器訪問幾個頁面。回到Eclipse,右鍵點擊my_jsp選擇Refresh。你將會看到多出Java的類文件。

    17.  在任何類上雙擊,打開_jspService方法,設(shè)置一個斷點。返回到瀏覽器點擊Refresh

    JSP頁面將會關(guān)聯(lián)上來,你就可以進(jìn)入代碼了。當(dāng)調(diào)試器靜進(jìn)入響應(yīng)JSP頁面的Java類,JSP編輯器將會自動鏈接起來,你將會自動進(jìn)入JSP代碼的感覺。所有變量將會被賦值,然后你真實的在調(diào)試任何Java類。現(xiàn)在大功告成了。

    調(diào)試器驗證

    現(xiàn)在可以在調(diào)試模式下啟動你的應(yīng)用程序。只需要確保服務(wù)器正在監(jiān)聽1044端口,你可以運(yùn)行netstat /a.你將會在打開的端口列表中看到1044端口。(參見圖: 打開端口列表: netstat -a)


         打開端口的列表
    : netstat -a

    Eclipse連接

    在保證weblogic正在端口1044上監(jiān)聽正在來到的連接后,剩下的事就是要告訴Eclipse連接這個端口,你可以準(zhǔn)備調(diào)試了。

    1.      Eclipse里,打開Run | Debug(參見圖: Eclipse中創(chuàng)建遠(yuǎn)程Java應(yīng)用配置)

    2.      在左邊列中選擇Remote Java Application,在列的底部點擊New

    3.      Create configuration界面上,將被提示輸入一些值。首先設(shè)置一個有意義的名詞。在我的例子中設(shè)置為WebLogic Instance。對于項目,選擇你想調(diào)試的包含源代碼的Java工程。保留Connection Type為缺省值,等等Standard (Socket Attach)。對于Host,輸入localhost。如果想調(diào)試遠(yuǎn)程服務(wù)器,輸入主機(jī)名或者IP地址。對于端口,輸入1044或者輸入你定義在Weblogic啟動腳本中的端口

    4.      點擊Apply

    5.      確保Weblogic實例運(yùn)行在調(diào)試模式。在界面上點擊DebugEclipse應(yīng)該自動進(jìn)入Debug透視圖,可以看到Debug試圖下的堆棧跟蹤。

    6.      如果沒有自動進(jìn)入Debug透視圖,選擇Window | Open Perspective | Other然后點擊Debug

    Eclipse中創(chuàng)建遠(yuǎn)程Java應(yīng)用配置

    Eclipse調(diào)試器中的斷點

    Eclipse調(diào)試窗口應(yīng)該自動在你第一個斷點處自動彈出棧(參見圖: Eclipse調(diào)試器中的斷點)。然后,你可以使用調(diào)試器提供的所有功能,即變量值、進(jìn)入代碼,drop to frame等等。

    參考

    *       Debugging J2EE Applications

    *       Connecting to a Remote VM with the Java Remote Application Launcher

    *       Debugging with the Eclipse Platform

    系統(tǒng)信息

    *       Windows XP Professional

    *       JDK 1.4.2_07

    *       Eclipse 3.2

    *       BEA WebLogic 8.1

    *       JBoss 4.0.2

    *       Tomcat 5.5.12

    posted on 2008-07-06 21:53 一葉笑天 閱讀(6004) 評論(0)  編輯  收藏 所屬分類: Eclipse技術(shù)
    主站蜘蛛池模板: 青草草色A免费观看在线| 在线播放亚洲第一字幕| 久久久亚洲欧洲日产国码二区| 亚洲一区二区高清| 亚洲AV成人无码天堂| 久久成人a毛片免费观看网站| 歪歪漫画在线观看官网免费阅读| 精品亚洲永久免费精品| 亚洲国产成人AV网站| 免费精品国产日韩热久久| 亚洲国产精品一区二区成人片国内| 午夜亚洲国产精品福利| 青春禁区视频在线观看直播免费| 亚洲人成电影在在线观看网色| eeuss影院免费92242部| 国产精品无码一二区免费| 国产精品亚洲四区在线观看| 99re在线这里只有精品免费| 伊人久久大香线蕉亚洲| 免费国产在线精品一区| 亚洲无砖砖区免费| 久久亚洲综合色一区二区三区| 免费播放国产性色生活片| 免费黄色app网站| 在线综合亚洲中文精品| 182tv免费视视频线路一二三| 亚洲AV永久无码精品成人| 亚洲欧美黑人猛交群| 美女视频黄免费亚洲| 亚洲第一页中文字幕| 桃子视频在线观看高清免费视频| 亚洲香蕉网久久综合影视| 人成免费在线视频| 免费看国产曰批40分钟| 激情无码亚洲一区二区三区| 免费高清小黄站在线观看| 亚洲日韩国产二区无码| 天天操夜夜操免费视频| 亚洲精品蜜夜内射| 午夜一区二区免费视频| 国产精品亚洲AV三区|