使用 WebSphere Studio Application Developer 調(diào)試器調(diào)試 WebSphere 應(yīng)用程序_第1頁
使用 WebSphere Studio Application Developer 調(diào)試器調(diào)試 WebSphere 應(yīng)用程序_第2頁
使用 WebSphere Studio Application Developer 調(diào)試器調(diào)試 WebSphere 應(yīng)用程序_第3頁
使用 WebSphere Studio Application Developer 調(diào)試器調(diào)試 WebSphere 應(yīng)用程序_第4頁
使用 WebSphere Studio Application Developer 調(diào)試器調(diào)試 WebSphere 應(yīng)用程序_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、介紹2001年,IBM為開放源代碼社區(qū)引入了Eclipse平臺,以努力使其產(chǎn)品的工具對第三方產(chǎn)品更加開放,同時也努力對平臺進(jìn)行總體上的加強。作為這個戰(zhàn)略的一部分,IBM現(xiàn)在提供了一套新工具,用來構(gòu)建基于Eclipse平臺的企業(yè)Java應(yīng)用程序。這套新工具稱為WebSphereTstudioApplicationDevelope,它集成了一個基于Java的調(diào)試器來作為它自己的調(diào)試器。這給我們帶來了很大的好處,因為我們不必再使用兩個調(diào)試器。VisualAgeTMforJava由一個在VisualAgeforJava內(nèi)進(jìn)行調(diào)試的內(nèi)部調(diào)試器和一個用于調(diào)試遠(yuǎn)程服務(wù)器的IBM遠(yuǎn)程調(diào)試器(IBMRemote

2、Debugger)組成?,F(xiàn)在我們可以使用一個調(diào)試器,它可以滿足您的全部需要,并且具有IBM一貫提供的豐富的功能。我們打算在兩篇文章中向您介紹這個調(diào)試器。我們假設(shè)讀者熟練掌握了J2EE、WebSphereStudioApplicationDeveloper開發(fā)和部署的基礎(chǔ)知識。在這篇文章中,我們通過在WebSphereStudioApplicationDeveloper內(nèi)使用EJB、Servlet和JSPs,向您介紹如何使用這個調(diào)試器及其某些基本/集成功能來調(diào)試Java應(yīng)用程序。我們將采取一種實際操作的辦法介紹一個簡單的Web應(yīng)用程序,這個應(yīng)用程序存在幾個相互嵌套的問題(一個問題在JSP代碼中,

3、一個問題在Servlet代碼中,還有一個問題在EJB代碼中),我們將使用這個調(diào)試器發(fā)現(xiàn)和修正全部三個問題。在第2部分中,我們將說明,把應(yīng)用程序部署到WebSphereApplicationServer,高級版(AdvaneedEdition(AE)之后,如何使用WebSphereStudioApplicationDeveloper來調(diào)試它。下面的可下載文件,DebugInWSADpt1.zip,包含有本文所描述的類和歸檔。調(diào)試一個簡單的Java應(yīng)用程序在調(diào)試器中啟動您的應(yīng)用程序切換到(或打開)一個Java透視圖。創(chuàng)建一個新的Java工程并將之稱為TestDebug。將樣本Java應(yīng)用程序tes

4、tdebug.jar文件導(dǎo)入到TestDebug工程。請檢查poc.debug.app.AppDebug.java。它是一個簡單的應(yīng)用程序,我們將用它來演示調(diào)試器的基礎(chǔ)知識。插入一個斷點到main方法中的循環(huán)內(nèi)的以下語句:x=y+z;要這樣做,您可以雙擊源代碼的左窗格,或使用彈出菜單,如下面的圖1所示。6.圖1.向源代碼添加斷點在工具欄中,單擊Debug(膨IR)按鈕。您將看到一個對話框,詢問您想使用哪一個啟動程序。選擇JavaApplication,選中Setasdefaultlauncher.復(fù)選框,然后單擊Next。運行應(yīng)用程序的另一個按鈕是Run(興*)按鈕。這個按鈕在非調(diào)試JavaJ

5、VM中運行應(yīng)用程序,這種JVM的執(zhí)行速度更快,但不允許調(diào)試或使用斷點。這是WebSphereStudioApplicationDeveloper和VisualAgeforJava之間的根本不同之處,VisualAgeforJava在它自己的JVM中運行所有應(yīng)用程序,并且總是在調(diào)試模式中。而WebSphereStudioApplicationDeveloper則使用可插式JVM,并且您可以選擇是否要在調(diào)試模式中運行。選擇您想測試的類。WebSphereStudioApplicationDeveloper給您一個選項,讓您選擇要用應(yīng)用程序啟動程序(ApplicationLauncher)啟動的、在

6、同一個工程中的一組類。這個啟動程序?qū)恿硪粋€JVM進(jìn)程來運行您的應(yīng)用程序(看一下WindowsTaskManager,其中將顯示一個額外的javaw進(jìn)程,并且將出現(xiàn)一個帶AppDebug.java源代碼的Debug視圖。)現(xiàn)在讓我們停下來,快速看一下我們在調(diào)試模式中可以使用的不同視圖和功能。調(diào)試器透視圖和調(diào)試器任務(wù)Debug/Process/Navigator視圖Debug視圖顯示當(dāng)前線程、先前終止的線程、執(zhí)行堆棧和停止時所在的當(dāng)前斷點。請注意,正是這個debug視圖帶有這些熟悉的按鈕:Step、Stepinto、Stepout、Run、Suspend和其它調(diào)試控制按鈕。單擊Process窗

7、格將向您顯示當(dāng)前進(jìn)程,系統(tǒng)正在用來運行這個應(yīng)用程序的可執(zhí)行文件(在我們的案例中是javaw)。Navigator窗格只是一個瀏覽器,它允許您全面瀏覽代碼,而且不用離開調(diào)試透視圖就可以再多設(shè)置些斷點。圖2.Debug/Process/Navigator視圖,terminated?AppDebugJavaApplicatior:!AppDebugJavaApplication-AppDebugatlocalhost:5463坯.SystemThreadFinaljzer(Running坯.SystemThreadReferenceHandler(Running)鉛SystemThreadSigna

8、ldispatcher(Running)-舉Threadmain(Suspended(breakpointatline10inAppDebugAppDebug.mairifStringline:1DNavigatorProcessesDebugBreakpoint/Inspector/Variables/Inspector視圖這個視圖的缺省窗格是Breakpoints視圖,您將在其中看到程序中可用斷點的列表。您也可以在一個斷點上單擊鼠標(biāo)右鍵并從彈出菜單中選擇HitCount,它告訴調(diào)試器在一定數(shù)量的命中后停止。如果你想讓循環(huán)停止于某次迭代,在這樣的循環(huán)內(nèi)設(shè)置斷點,這很有用。把您的斷點的HitC

9、ount設(shè)置為2。如果您在Variable窗格上單擊,那么您將有機(jī)會看見可用的變量以及它們的值。在任何變量上單擊鼠標(biāo)右鍵,您都將得到以下選項:Inspect-variables視圖可能包含許多變量。inspector視圖允許您集中在感興趣的少量變量上。ChangeValue-這是一個非常重要的功能。當(dāng)您選擇這個選項時,您將可以改變所選定的變量的值,并可以研究這一改變對程序執(zhí)行的影響。ShowTypeNames-這個選項顯示變量的類型。ShowQualifiedNames-這個選項允許您看到變量類型的全限定名。圖3.Breakpoint視圖圖4.Variables視圖單擊Run()按鈕,您將注意

10、到執(zhí)行將在斷點處停止。檢查count變量和其它變量的值,確認(rèn)程序執(zhí)行在循環(huán)的第二次迭代處停止。這是我們前面設(shè)置的命中計數(shù)(hitcount)。Code、Outline和Tasks/Console視圖Code和outline視圖跟您在其它透視圖中看到過的視圖是相同的。tasks視圖也一樣,它與Console視圖共享同一個窗格。這個調(diào)試器的優(yōu)秀功能之一是可以運行到代碼的某個點上。例如,如果我們現(xiàn)在想運行到并停止在循環(huán)后面緊跟的語句上,則我們可以在code視圖中,在該語句上單擊鼠標(biāo)右鍵并選擇RuntoLine。當(dāng)您單步執(zhí)行(step-over)該語句時,程序在console視圖中輸出x的值。請注意c

11、onsole視圖如何自動變成活動的窗格。這是console視圖的缺省行為,每次您輸出一些內(nèi)容時,console視圖都會變成活動的。您可以從Preferences對話框的Debug窗格改變這種行為和console視圖中的輸出格式。在運行調(diào)試器時修改代碼(熱修改)在VisualAgeforJava中,我們有了熱方法編譯(hotmethodcompiling)”功能。這意味著我們可以在調(diào)試一個方法時修改該方法內(nèi)的代碼,調(diào)試器會自動跳回到執(zhí)行塊的開頭,我們可以繼續(xù)調(diào)試而無需重新運行應(yīng)用程序。這是一個可用于VisualAgeforJavaJVM(我們稱它為J9類JVM)的功能。這個功能在標(biāo)準(zhǔn)JVM(例如

12、:WebSphereStudioApplicationDeveloper附帶的JVM)中是沒有的。這個新工具確實慮及了在您修改WebSphereApplicationServer中的Servlet后重新裝入它。這保證了這個Servlet方法的第二次執(zhí)行將反映您的最新修改。Servlet/JSP的調(diào)試要演示編譯器調(diào)試Servlet/JSP的功能,請將TestEAR.ear文件裝入到名為TestEAR的工程。如果您遇到了任何編譯錯誤,請確保剛剛創(chuàng)建的AdderEJB工程在AdderWEB工程的類路徑中。理解Adder企業(yè)應(yīng)用程序我們構(gòu)建了一個名為poc.debug.ejbs.AdderSessio

13、n的會話EJB,它提供strCat方法,這個方法使用內(nèi)存緩沖區(qū)(在Java中將字符串連接起來的快速的、推薦的辦法)將兩個字符串連接起來。我們還有一個圍繞我們的會話bean的訪問bean-poc.debug.ejbs.AdderSessionAccessBean。我們使用WebSphereStudioApplicationDeveloper構(gòu)建訪問這個訪問bean的Web,它生成如下內(nèi)容:poc.debug.Servlet.AdderController-一個Servlet,它將表單的輸入導(dǎo)到輸出JSP。poc.debug.Servlet.AdderViewBean-這個bean封裝調(diào)用訪問Be

14、an的strCat的邏輯,然后將結(jié)果傳回到調(diào)用者。AdderInputForm.html-這是一張輸入表單,它接受用戶輸入并調(diào)用AdderControllerServlet。AdderResults.jsp-這是JSP結(jié)果頁,它使用AdderViewBean顯示結(jié)果。配置運行應(yīng)用程序創(chuàng)建WebSphere4.0測試實例/配置(TestInstance/Configuration)并命名為TU(測試單元(TestUnit)。在TU的Configuration中,單擊鼠標(biāo)右鍵并將TestEAREAR添加到配置中。從Servers視圖選擇TU服務(wù)器并單擊Run(藝:一)按鈕。.1.2.

15、.0.11.在您的Web瀏覽器中,輸入: HYPERLINK http:/localhost:8080/Adder/ http:/localhost:8080/Adder/這應(yīng)自動裝入AdderInputForm.html,因為它被配置為一個歡迎頁面。在輸入表單中,輸入任意兩個字符串,單擊Submit并注意結(jié)果。您應(yīng)得到404errorfilenotfoundAddResultX。停止服務(wù)器,讓我們找出如何使用這個調(diào)試器來定位這個問題。調(diào)試Servlet在Java或Web透視圖中,打開AdderWeb工程并定位到AdderController.performTask

16、()方法。在try塊的第一行:performServices(request,response);,設(shè)置一個斷點?,F(xiàn)在再次啟動服務(wù)器,但這次請單擊Debug(鈞)按鈕,這樣服務(wù)器將以調(diào)試模式啟動,并啟用了斷點。將AdderInputForm.html重新裝入到Web瀏覽器。在輸入表單的兩個域中輸入任意兩個字符串并單擊Submit。您會注意到Server透視圖變成活動的了,您將可以在其中進(jìn)行調(diào)試。在server透視圖中,您將注意到的第一件事是,Debug、Console和Variables窗格共享同一個窗口!由于在您單步遍歷執(zhí)行(stepthrough)代碼的過程中,每當(dāng)需要檢查變量值時都要切換

17、窗口,所以這可能不太方便。這個問題的解決辦法是,或者自己重新安排這些server視圖,或者在Debug視圖中進(jìn)行調(diào)試,Debug視圖更適合于這個過程。在Debugger透視圖中進(jìn)行調(diào)試有兩種方式。第一種容易的方式是在命中代碼中的斷點之前手工切換到debugger透視圖。這并非總是容易的。比如說,您在HttpServlet.init()方法(被設(shè)置為在啟動時自動裝入)中設(shè)置了一個斷點。所以,現(xiàn)在我們將向您展示如何在Debug透視圖中調(diào)試服務(wù)器,即使您在該服務(wù)器或任何其它透視圖中獲取了斷點。切換到Debug透視圖在Debug視圖中,首先定位到Server進(jìn)程,如下面的圖5所示。圖5.Debug進(jìn)程

18、視圖ni!hWebSphereiigryprproce?atIcrtalhost:14538-雜頤unkncivynaServerLauncher趨SystemThreadFinalizer(Running)QaSystemThreadReferenceHandler(Running).”Cl.jo+amr4iorio+Koe1iLirhifM、在運行在server之下的線程的列表中,定位到列表底端附近的線程,也就是緊靠著底端的Suspended(breakpoint.,如下面的圖6所示。如上面的圖5所示,由于有+號緊靠著它,定位這個線程顯然很容易。如果展開這個線程,您將看到執(zhí)行堆棧。12.1

19、..1.12.13.圖6.debug視圖中的暫掛進(jìn)程坯ThreadSerylet.Engine.Transports:8(Running)邑Thfemcl啓eFwlet.Erigirie.TVmr/Uportm:gRLnriirig).-ThreadEer*let.Engine.TrangpcirtsdCiugpencieci(bre日kwintatline66inAdderController:)I三AdderCortroller.performTasktl-litpSevletRequesf!HttpServl

20、etR&spons6).lin三AdderCortroller.doPositHttpServJetRsquesi!HttpServletResponse)line:88血“cydlryFLJ+中m;rrLJ441口ce,LJ+中IC1j.j-.tr.jilLI雙擊該堆棧的頂部,您將在Debug透視圖中看到源代碼。單步遍歷執(zhí)行您的Servlet代碼。您將看到,我們將變量nextPage的值手工設(shè)置為AddResultX。我們應(yīng)使用getInitParameters()方法取代它。將代碼中的如下一行注釋掉:nextPage=AddResultx;取消對下面這一行(這一行包含正確的代碼)的注釋:/

21、nextPage=getInitParameter(request.getParameter(command);保存Servlet。前面已經(jīng)提到過,WebSphereApplicationServer4.0能夠自動重新裝入Servlet和JSP,所以,您不必在每次更改Servlet或JSP時都重新啟動服務(wù)器??紤]到實際操作問題,由于我們將不再需要Servlet中的斷點,如果您將它除去禁用,事情將變得更加容易。將輸入屏重新裝入到Web瀏覽器。輸入一些值并單擊Submit。這次您應(yīng)得到正確的JSP頁面,但打印出來的值是null值。下一步是調(diào)試JSP,看看我們是否有可能進(jìn)一步修正問題。調(diào)試JSP在您

22、的Web透視圖或任何其它透視圖中,瀏覽到AdderResults.jsp文件并打開它。在source窗格中單擊,觀察這個JSP的源代碼。請注意,有Java調(diào)用的第一行在第48行。它的樣子象這樣:Stringst1=newjava.lang.String(request.getParameter(str21);在此行的下一行單擊鼠標(biāo)右鍵并選擇AddBreakpoint。將AdderInputForm.html重新裝入到Web瀏覽器。在輸入表單的兩個域中輸入任意兩個字符串并單擊Submit。回到debug透視圖(如前一部分所述)。單步跳過(stepover)開頭兩個語句,驗證變量strl和str2

23、是否保存了您輸入到HTML表單的值。然后,在第50行單擊Step-into(皤)按鈕。這將把您帶到AdderViewbean的代碼中。一旦您處在了AdderView源代碼中,您將意識到我們正在調(diào)用錯誤的方法。我們本應(yīng)該調(diào)用AdderView.strCat()方法,而不是AdderView.badStrCat()。所以,現(xiàn)在您將需要回到您的JSP文件,編輯第50行并將它修改為:Stringmethod0=AdderBean.StrCat(st1,st2);保存JSP。切勿除去斷點(我們將需要它來演示客戶機(jī)調(diào)試和EJB)。重新裝入您的輸入表單。在兩個域中輸入兩個不同的值。例如:Hello”和Wor

24、ld”,單擊submit。14.現(xiàn)在,您將注意到null已經(jīng)消失,但我們將得到第一個字符串與它自身連接在一起形成的字符串。要修正這一錯誤,我們將需要再次調(diào)試對EJB的JSP調(diào)用。EJB的調(diào)試我們使用EJB訪問bean來訪問負(fù)責(zé)完成字符串連接的會話bean。試圖單步跳入(stepinto)對EJB的調(diào)用將使我們陷入一片混亂的存根和服務(wù)器所生成的代碼。在象這樣的情況下,在可能發(fā)生問題的調(diào)用中的EJB上設(shè)置斷點是常見的做法。在我們的例子中是AdderSessionBean.StrCat()。在Java或J2EE透視圖中,從AdderEJB工程打開poc.debug.ejbs.AdderSession

25、Bean.java。在StrCat方法的第一個執(zhí)行行添加一個斷點。重新裝入您的輸入表單。在兩個域中輸入兩個不同的值(即Hello”和“World”)并單擊Submit。您將首先命中JSP中的斷點。單步跳過前兩行,然后單步跳入行號50。在AdderView.StrCat方法中,單步跳過這個樣子的行:ret=bean.StrCat(str1,str2);請注意,在這個案例中,在應(yīng)用程序服務(wù)器(AppServer)空間中運行的Adderviewbean實際就是我們的EJB的客戶機(jī),不過,在這個特定的案例中,它們共享同一個JVM。所以,如果您在Process視圖查看執(zhí)行堆棧內(nèi)部,您將注意到它們是在同一

26、個進(jìn)程上運行。另一個客戶機(jī)(在EJBclient.zip中)可以用作獨立Java應(yīng)用程序,用來測試您的EJB。當(dāng)您把這個客戶機(jī)添加到任何Java工程中時,請確保您把下列內(nèi)容添加到了工程的構(gòu)建路徑。6.oj2ee.jar*oijvejb35.jar*oAdderEJB工程(*)這些文件可在pluginscom.ibm.etools.websphere.runtimelib目錄找到。當(dāng)您調(diào)試這個應(yīng)用程序時,您將注意到兩個重要事實:存在兩個獨立的進(jìn)程。一個用于應(yīng)用程序,一個用于EJB服務(wù)器。在您的代碼的執(zhí)行過程中,WebSphereStudioApplicationDeveloper調(diào)試器有從一個J

27、VM到另一個JVM來回切換的強大能力。7.單擊Step-over(:)按鈕,您會注意到調(diào)試器將在EJBstrCat方法內(nèi)的斷點處停止。單步遍歷執(zhí)行EJB,您將認(rèn)識到錯誤。我們只是把strl連接了兩次,根本沒使用str2。修正這個問題并保存代碼。您將需要重新啟動服務(wù)器以刷新EJB代碼。別忘了要在調(diào)試模式中啟動它。與Servlet和JSP的情況不同,當(dāng)您修改了您的EJB中的代碼時,WebSphere4.0將要求重新裝入服務(wù)器。重新裝入您的輸入表單,輸入數(shù)據(jù),跟蹤您的代碼到EJB語句。驗證sf變量是否確實帶有正確的值。請注意,如果您從EJB單擊Return(證按鈕,則您將運行回到服務(wù)器生成的EJB類

28、。為了避免發(fā)生這樣的事情,在堆棧中選擇JSP調(diào)用就行了,如下面的圖7所示。然后,您可以使用Step-over(園)按鈕并繼續(xù)執(zhí)行JSP文件。13.圖7.選擇了JSP的Debug進(jìn)程視圖14.驗證返回字符串是否帶有正確的值(您輸入的字符串的連接)?,F(xiàn)在,您成功地完成了存在問題的Servlet、JSP和EJB代碼的調(diào)試。結(jié)束語到目前為止,我們在這篇實際操作的文章中所做的是,向您展示在不同的情形下如何使用WebSphereStudioApplicationDeveloper開發(fā)環(huán)境調(diào)試Java應(yīng)用程序、Servlet、JSP和EJB。在下一篇文章中,我們將向您展示如何使用WebSphereStudi

29、oApplicationDeveloper調(diào)試器調(diào)試在WebSphereAE的遠(yuǎn)程實例中運行的應(yīng)用程序。在本系列的第1部分中,我們介紹了新的WebSphereTstudioApplicationDeveloper調(diào)試器以及如何在不同的測試情形下使用它。在本文中,我們將向您展示如何配置WebSphereStudioApplicationDeveloper來調(diào)試已經(jīng)部署到主機(jī)的WebSphereApplicationServer,高級版(AE)上的應(yīng)用程序。在對部署進(jìn)行測試時,這一點很有用,并展示了WebSphereStudioApplicationDeveloper的調(diào)試器作為遠(yuǎn)程調(diào)試器的新功能

30、。您可以采用JoeWinChester所寫的文章調(diào)試在WebSphereApplicationServer內(nèi)運行的Java代碼描述的類似步驟,使用獨立的IBM遠(yuǎn)程調(diào)試器(IBMRemoteDebugger)在WebSphereApplicationServer,高級單服務(wù)器版(AdvaneedSingleServerEdition(AEs)上調(diào)試應(yīng)用程序。我們決定在本文中不做那些工作,因為WebSphereStudioApplicationDeveloper支持將AEs用作測試服務(wù)器,而且也提供動態(tài)發(fā)布。我們假設(shè)您已經(jīng)知道如何運行ApplicationServer并且了解Application

31、Server管理的基礎(chǔ)知識。如果您以前使用IBM遠(yuǎn)程調(diào)試器調(diào)試過WebSphereApplicationServerAE,則您可以跳過本文的第一部分,因為它是以前的文章,WebSphere開發(fā)者園地上JoeWinchester所寫的調(diào)試在WebSphereApplicationServer內(nèi)運行的Java代碼的重復(fù)。配置ApplicationServer以在調(diào)試模式中運行在WebSphereApplicationServerAE上進(jìn)行的調(diào)試是以每個應(yīng)用程序服務(wù)器為基礎(chǔ)的。這允許您把一個特定的應(yīng)用程序服務(wù)器設(shè)置成遠(yuǎn)程調(diào)試,而其它應(yīng)用程序服務(wù)器可以有不同設(shè)置。從WebSphere管理控制臺單擊您想

32、遠(yuǎn)程調(diào)個試的應(yīng)用程序服務(wù)器(applicationserver)。這樣做之后,該應(yīng)用程序服務(wù)器的設(shè)置將立刻出現(xiàn)在窗口的右邊較下部分,如下面的圖1所示。選擇JVMsettings窗格。3.圖1.Applicationserver屬性4.從JVMsettings窗格單擊AdvancedJVMSettings.。要實際看到這個按鈕,您得向下滾屏。5.在如下所示的新打開的對話框中,確保您選擇了以下設(shè)置:a.EnableDebugMode被選中。b.EnableIBMDistributedDebugger未被選中。c.DisableJIT被選中。最新的WebSphereApplicationServer

33、會自動禁用JIT。使用JIT將啟用代碼優(yōu)化,按照定義,代碼優(yōu)化將改變行號并導(dǎo)致所有調(diào)試器失效。d.在測試域DebugString輸入以下字符串。請注意,“nnnn是您所選擇的端口號。您可以查看調(diào)試字符串意義說明部分獲得關(guān)于端口號的更多信息。-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=nnnne.f.單擊OK。圖2.AdvancedJVMsettings調(diào)試字符串意義說明-Xrunjdwp:transport=dtsocket這個字符串告訴調(diào)試器使用套接字作為它的傳輸機(jī)制。調(diào)試器將能夠使用開放套接字來偵聽客戶機(jī)。另一個可能的值

34、是dt_shmem,如果調(diào)試器和Applicationserver在同一臺機(jī)器上運行,它就用共享內(nèi)存代替套接字傳輸。server=yJVM作為可調(diào)試的服務(wù)器運行,并且調(diào)試客戶機(jī)可以連接到JVM。suspend=n當(dāng)您開始運行時,服務(wù)器不應(yīng)暫掛。重要信息:如果您使用suspend=y,則applicationserver將在執(zhí)行開始時暫掛并等待,直到調(diào)試器連到該應(yīng)用程序服務(wù)器上,接著您才可以從調(diào)試器恢復(fù)applicationserver的運行。如果Servlet或EJBs?被配置成在服務(wù)器啟動的時候裝入,并且您想調(diào)試這些代碼,這就會變得很方便。通過將suspend設(shè)置為y,您就為自己留下了在恢復(fù)

35、服務(wù)器啟動前進(jìn)行連接調(diào)試器和設(shè)置斷點等操作的時間。address=nnnn請勿輸入nnnn,而要輸入您選擇的一個號碼。這個號碼將是一個端口號,調(diào)試器引擎將偵聽這個端口號,等待調(diào)試器接口鉤(hook)上來。一個常見的錯誤是使用8080或9080端口,這兩個端口總是處于忙狀態(tài)。在NT機(jī)器上,您可以發(fā)出命令netstat-ausedports.txt,然后搜索usedports.txt文件找出哪些端口正在使用中并避開它們。您可以在您正在使用的任何平臺上使用類似的命令。在這個樣本中,我使用了0371,這個端口在我的機(jī)器上一直是閑著的。在SunJavaWeb站點上可找到更多信息。查找JavaPlatfo

36、rmDebuggerArchitecture(JPDA)文檔,您將在ConnectionandInvocationDetails部分找到這些參數(shù)的詳細(xì)信息。確保單擊了Apply,以使對應(yīng)用程序的更改生效。您的管理屏幕應(yīng)向您顯示您所選擇的設(shè)置,如下面的圖3所示。現(xiàn)在,您應(yīng)以調(diào)試模式啟動您的應(yīng)用程序。圖3.完成后的JVM設(shè)置將調(diào)試器連到ApplicationServerAE上5.要使用WebSphereStudioApplicationDeveloper來調(diào)試應(yīng)用程序,您必須在您的一個工作區(qū)工程中調(diào)試應(yīng)用程序代碼,并采取這些簡單步驟。.確保您正嘗試調(diào)試的應(yīng)用程序的EAR被裝入到了您的

37、工作區(qū)。按我的經(jīng)驗,即使源文件中包含有一些由于沒找到所引用的庫而產(chǎn)生的錯誤,仍然可以調(diào)試它們。請記住,這個應(yīng)用程序?qū)嶋H運行在遠(yuǎn)程服務(wù)器上。在應(yīng)用程序中您想調(diào)試的地方插入斷點。您可以象本系列的第一篇文章所描述的那樣,將斷點插入到EJB代碼或Servlet中。注:您目前不能調(diào)試JSPs?,因為本質(zhì)上它們是在編譯時生成的,而且我們正在使用標(biāo)準(zhǔn)Java調(diào)試API的JSP。單擊緊靠DebugMenu(選擇菜單項Debug=RemoteJavaApplication,如下面的圖4所示。圖4.調(diào)試遠(yuǎn)程應(yīng)用程序菜單ProjectDebugWindowHelpApplicationClientLauncherRun-timeWorkben匚hRun-timeWorkbenchWithTracing5eryerLauncherJavaApplication黴RemoteJavaApplication產(chǎn)丁|卷親J爵瞬砂礫聲|曹|該所示。Port號是您在前面的調(diào)在對話框指定您的主機(jī)名和端口號,如下面的圖5試字符串中所指定的那個nnnn號。圖5.調(diào)試服務(wù)器對話框6.單擊Finish,您將注意到,在Debug透視圖中顯示一個“classidM正在運行。請參看下面的圖6。這是您的WebSphereApplic

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論