如果無法找到 IBM Workplace Collaboration Services 應用程序中的故障,別擔心,我們將展示如何使用 IBM Rational Application Developer for WebSphere Software v6.0 來調試這些故障。為了便于演示,我們將導入一個包含兩個故障的示例應用程序,在 Workplace Collaboration Services 服務器上運行該應用程序,并使用 Rational Application Developer 查找和糾正這些故障。
本文的示例應用程序不是一個完全成熟的 Workplace Collaboration Services 組件。它只是一個簡單的度量衡轉換應用程序,但用它足以演示如何調試在 Workplace Collaboration Services 應用程序中運行的應用程序。Workplace Collaboration Services 組件的實際開發超出了本文的范圍。
本文假設您熟悉 Workplace Collaboration Services 及其應用程序、Rational Application Developer 和 Java 編程。
設置
我們的示例應用程序是用 Collaborative Component Wizard for IBM Workplace Collaboration Services 應用程序開發的,現在可以從 IBM Workplace Software Development Kit (SDK) 中獲得該應用程序。因此,需要正確地設置 Workplace Collaboration Services 服務器和 Rational Application Developer workspace,以便使用此示例應用程序。請參閱 developerWorks 中的文章 “為 IBM Workplace Collaboration Services 創建協作組件” 來設置您的工作空間。
將組件安裝到 Workplace Collaboration Services 服務器之前,首先要在服務器上安裝和配置 Workplace SDK 運行時文件,如果還沒有完成這項工作,請參閱 Workplace SDK User's Guide 來獲得安裝和配置信息。該指南解釋了如何在服務器上設置 Workplace SDK 運行時文件,這項工作只需要做一次即可。
為了調試運行在 Workplace Collaboration Service 中的應用程序,該服務器需要運行在調試模式下。要設置該模式,首先需要登錄到 Workplace Collaboration Services 服務器的 Administrative Console。在導航樹中展開 Servers 節點,單擊 Application Servers,然后在主窗格中單擊 WebSphere_Portal 服務器來修改其屬性(參見圖 1 )。
向下滾動該頁面,直到您找到 Debugging Service 項,單擊該項來設置用于調試服務的屬性。在 Debugging Service 頁面上,選擇 Startup 選項來啟動服務,并輸入想要使用的端口(參見圖 2)。如果要修改默認端口,請務必牢記它們,因為以后還需要使用它們。
如果對配置感到滿意,則單擊 OK 保存對主配置所做的更改,然后在繼續前進之前重啟服務器。
在 Rational Application Developer 中,利用項目交換 (project interchange) 功能導入本文附帶的示例應用程序。操作過程如下:選擇 File - Import - Project Interchange,然后選擇 measureconverter.zip 文件,單擊 Select All,最后單擊 Finish 導入示例。如果操作正確,而且正確地配置了工作空間,那么在 Project Explorer 視圖中應該能夠看到這些項目,Project Explorer 視圖類似于如圖 3 (您可能需要展開相關組節點)。這里應該沒有構建錯誤。
運行該應用程序
剛才導入的應用程序由一個單獨的 portlet 項目和一些輔助的 J2EE 資源組成。它實現了一個簡單的度量衡轉換器,將英里轉換成千米,將攝氏度轉換成華氏度,等等。
要運行該應用程序,首先需要部署 portlet 使用的 J2EE 資源。要做到這一點,則需要從 MeasureConverterEAR 的上下文菜單中選擇 Deploy 來準備部署 MeasureConverterEAR。
接下來,通過從 EAR 的上下文菜單中選擇 Export - EAR 文件,將 Enterprise Archive (EAR) 文件傳輸到服務器。然后為這個 EAR 文件選擇一個臨時位置,并單擊 Finish。
要部署該 EAR 文件,則需要登錄到服務器的 Administrative Console,展開 Applications,并單擊 New Application(參見圖 4)。
單擊 Browse 按鈕,選擇剛才導出的 EAR 文件并單擊 Next。繼續執行向導的指示,接受默認值,直到前進到 “步驟 3:將模塊映射到應用服務器”。
在這個列表框中,選擇包含 server=WebSphere_Portal 的項(參見圖 5)。然后選擇所有選項并單擊 Apply?,F在可以繼續執行向導的指示,接受所有默認值。
在您安裝了該應用程序之后,保存對 Master Configuration 的更改,然后在 Enterprise Application 列表中搜索 EAR 文件,選中它,并單擊 Start 按鈕。
現在 MeasureConverterEAR 已經成功部署到服務器上,您可以運行該 portlet 項目了。從 MeasureConverterPortlet 項目的上下文菜單中選擇 Run - Run on Server。IBM Workplace Collaboration Services 運行在 WebSphere Portal 之上,因此請在第一個 Server Selection 向導中 輸入主機名稱,選擇 “WebSphere Portal v5.0 Server Attach” 服務器類型,然后單擊 Next(參見圖 6)。
提示:選擇 “Set server as project default” 選項,避免每次運行該項目時都看到這個對話框。
在下一個向導面板中輸入 Workplace Collaboration Services 服務器和調試服務(前面已配置)使用的相關端口,并單擊 Next。
提示:如果不修改用于調試服務的默認設置,那么此向導頁面中的默認設置就是正確的。
在標題為 WebSphere Portal Setting 的向導面板中,修改在 Workplace Collaboration Services(參見圖 7)中運行應用程序的默認值。首先,將基本 Uniform Resource Identifier (URI) 修改為 Workplace Collaboration Services 服務器的 URI(通常為 /lwp)。然后對 Default 頁面和 Personalized 主頁設置進行同樣的修改(通常分別修改為 /workplace 和 /myworkplace)。最后,確保 Enable WebSphere 安全性選項已被選中。
接下來,在 WebSphere Portal Administrator 區域中輸入管理員帳戶的用戶 ID 和口令。此信息將復制到 WebSphere Portal login 區域。如果想以用戶身份而不是以管理員身份來運行 portlet,則請輸入想要在這里使用的用戶 ID 和口令。如果認為設置是正確的,則單擊 Finish。
在單擊 Finish 之后,portlet 就被部署到 Workplace Collaboration Services 服務器中,并且瀏覽器也被調用??梢詫Ш降?PortletPreview 頁面來查看 portlet。(因為 Workplace Collaboration Service 運行在調試模式下,所以它顯然比平常慢很多)。
提示:如果編輯在 Portal 選項卡下創建的服務器配置,并將 Label Ordinal 字段設置為零,那么 PortletPreview 頁面將是您打開的第一個頁面。
如果一切順利,那么您應該看到錯誤消息:“This portlet is unavailable. If the problem persists, please contact the portal administrator”。參見圖 8。
![]() ![]() |
![]()
|
調試應用程序
顯然,我們所討論的 portlet 中有一個錯誤,我們必須調試該錯誤。打開 MeasureConverterPortlet 項目中的 MeasureConverterPortletView.jsp 文件,切換到 Source 選項卡,并在第 8 行中插入一個斷點:
PortletSession pSession = portletRequest.getPortletSession();
為了調試問題,首先必須連接到服務器。在 Servers 視圖中,右擊服務器并從菜單中選擇 Debug。Rational Application Developer 將連接到遠程 Workplace Collaboration Services 服務器,并切換到 Debug 視圖。在瀏覽器中導航到 PortletPreview 頁面。當服務器正在呈現該頁面時,它應該能夠找到您所設置的斷點,并且控制權將傳遞給 Rational Application Developer 的 Java 調試器。使用這個調試器可以執行普通的單步執行,并進入到代碼行 —— Java 和 JavaServer Pages (JSP) —— 檢查和修改變量。
如果使用 F6 鍵來單步調試 JSP 的 Java 代碼的每一行,那么應當看到是什么導致 portlet 不可用:
|
在這個代碼片段中,getFormText() 方法返回 null,這意味著 formText.length() 將拋出一個 Null Pointer 異?!,F在我們完成了對此錯誤的調試,然后可以通過再次右擊 Servers 視圖中的服務器并選擇 Disconnect 來斷開與遠程服務器的連接。
為了解決導致異常的問題,請打開 MeasureConverterPortletSessionBean.java(可能需要切換回 J2EE 或 Web 視圖來打開此文件)并將下列代碼行:
private String formText = null ;
更改為:
private String formText = "" ;
保存更改,并通過右擊 portletand 并選擇 Run - Run On Server 來再次運行 portletand。在這里,portlet 應當能正確顯示,但還有一個故障需要修復。如果輸入 10 km 作為輸入,它會被錯誤地標志為無效輸入。
再次通過在 Servers 視圖中的服務器的上下文菜單中選擇 Debug 連接到服務器。如果仍然保留著先前的斷點設置,那么會在同樣的位置中斷。如果沒有中斷,需要像先前一樣再次設置斷點。
再次分步調試 JSP 的 Java 代碼,我們將看到輸入被正確的檢索為 10 km。進一步觀察還可以發現, MeasureConverterDelegate 類正確地執行了轉換,將 10 km 轉換為 6.2 英里。
問題在下面這些 if-else 塊中:
|
應該將其更改為:
|
此外,要斷開與服務器的連接,修改并重新運行 portlet。這次代碼應該能正確運行,不會發生故障(參見圖 9)。
![]() ![]() |
![]()
|
結束語
我們已經使用 IBM Rational Application Developer 的調試工具部署了 IBM Workplace Collaboration Services 應用程序并進行了調試。本文只是簡要介紹了 Rational Application Developer 的調試功能,這些功能同時適用于 WebSphere Portal 和 Workplace Collaboration Services。雖然我們使用的是 Rational Application Developer,但您也可以以完全相同的方式使用 IBM Rational Software Architect。此外,本文中我們只在 JSP 中設置了斷點,但同樣也可以在 portlet 或 Enterprise Java Bean (EJB) 的 Java 代碼中設置斷點。
![]() ![]() |
![]()
|
描述 | 名字 | 大小 | 下載方法 |
---|---|---|---|
Sample EAR file for this article | measureconverter.zip | 42KB | HTTP |
原文轉自:http://www.anti-gravitydesign.com