簡介:本教程向您展示了如何使用 IBM® Rational® Business Developer 提供的 Data Application Access 向導,來創建一個訪問數據庫(在本教程中,是 DB2 中的 STAFF 表格)的 Web 應 用程序。
關於本教程
本教程將會帶領您了解使用 JavaServer Faces™(JSF)和 EGL 向導來創建一個 Web 應用程序的整個過程。
EGL Data Access Application 向導向您提供了 一種便捷的方式,來創建一個 EGL 邏輯過程,以在關系數據庫中維持某一個特定的表格。
我們將 會使用 DB2 作為關系數據庫以及 STAFF 表格。注意該表格可以位於其他的位置例如系統 z。對於 EGL 向導來說,這沒有什麼分別。
目標
您將會學會怎樣:
使用向導以創建一個 EGL 數 據訪問程序。
從 EGL 生成 Java 代碼。
處理生成的 Web Pages。
使用 WebSphere Application Server 來部署以及測試程序。
前提條件
熟悉基本的網絡部署概念。
開始學習
軟件工具的概述
我們將會使用 IBM® DB2® 作為關系數據庫,以及 STAFF 表格。該表格可以位於其他的位置 或者主框架上。對於 Rational Business Developer 向導,這沒有什麼分別。
您將會使用安裝在 IBM® Rational® Developer for System z ™頂部的 Rational Business Developer,但 是本教程對於安裝在 IBM® Rational® Application Developer 或者 IBM® Rational® SoftwareArchitect 頂部的 Rational Business Developer 來說,同樣有效。
圖 1 顯示了 Rational Business Developer 所提供的 Data Access Application 向導的結構。
圖 1. Data Access Application 結構
關於 EGL:
EGL 可以基於一個對數據庫的聯系創建簡單的數據訪問程序。結果得到的程序包含 了數據部分、邏輯部分、以及(可選的)基於一個或者更多個數據庫表格的 Web 頁面部分。對於您所選 擇的每一個表格,EGL Data Access Application 向導都會創建這些部分,您可以將它們放到一個新的, 或者一個已經存在的項目之中:
基於表格的數據部分
代表表格的 SQLRecord 部分
代表表格中列的 DataItem 部分
執行對數據庫所做操作的數據訪問函數,例如添加、獲取、刪除 數據。您可以選擇將這些函數置於鏈接庫或者服務之中。
同樣,您還可以選擇為數據訪問程序創 建一個 Web 界面。如果您選擇創建一個 Web 界面,那麼向導就會創建以下這些附加的文件以及部分:
一系列在 Java™Server Faces(JSF)下運行的部分中生成的 JSF 處理部分。
一系 列提供以下 Web 頁面的 Java™Server Pages (JSP)文件:
一個 Selection Condition 頁面,它負責從用戶那裡接受選擇的標准
一個 List 頁面, 它在用戶選擇的標准基礎之上顯示多行
一個 Create Detail 頁面,它允許用戶一次顯示或者插 入多行
一個 Detail 頁面,它允許用戶顯示、更新或者刪除某行
在您開始創建應用程序 之前,您要作出兩個決定:新文件和部分位於什麼地方:
您可以將所有的新文件和部分放到一個 項目之中,或者不同的項目之中,這取決於文件和部分的類型。數據部分、邏輯部分以及 JSFHandler 部 分(以及相關的 Web 頁面)可以放到不同的項目之中。
您可以將文件和部分放到一個新項目或者 已存在的項目之中。如果您選擇放到不同的項目之中,那麼有些會放到新項目中,而另外一些則位於已存 在的項目之中。
開發任務概述
完成本教程中的例子,您需要執行以下的任務:
使 用向導創建一個 EGL 數據訪問程序
從 EGL 生成 Java™代碼
驗證生成的 Web 頁面
使用 IBM® WebSphere® Application Server 來部署並測試程序
生成一個 EGL 數據訪問程序
重點:
本教程假設您已經啟動了 Rational Developer for System z。注 意您是在 VMWARE 之下運行的,這也許會降低其性能。
確定您使用的是合適的工作區。對於文章的例子,您需要切換到其他的工作區中,因為它已經得到定 制以節省時間。
為了切換至已經定制的工作區以及 Rational Business Developer 用例,您可以 點擊 File 並選擇 SwitchWorkspace,如圖 2 所示。
圖 2. 切換至已定制的工作區
當 Workspace Launcher 對話框出現時,您可以輸入 C:\Workspaces\RBD(如圖 3 所示)並點 擊 OK。
耐心一點,因為該操作要比其他 VMWARE 之下的操作花更多的時間。它大概需要一到兩分 鐘。
圖 3. 選擇工作區
工作區就切換了。如 果出現了歡迎界面,就關掉它,如圖 4 所示。
圖 4. 關閉歡迎界面
通過使 用 Web 視角來創建一個新的 EGL Web 項目
打開 New Project 向導,如圖 5 所示:
點擊 File > New > Project。
輸入 egl 以替換 type filter text。
選擇 EGL Web Project。
點擊 Next。
圖 5. 選擇一個向導
指定 EGL Web Project 選項,如圖 6 所示:
輸入 LAB4_Web 作為 Project name。
選擇 Web Project 並點擊 Next。
圖 6. 創 建一個 EGL Web 項目
在 New EGL Web 項 目對話框中:
確保 WebSphere Application Server v6.1 作為 Target Runtime 選中
確保 Create new project build descriptor 已被選中
點擊 Show Advanced Settings 然後點擊 Next,如圖 7 所 示。
圖 7. 創建 EGL Web 項目
3. 確保 EAR 項目名 是 LAB4_WebEAR,而 Create an EGL service deployment descriptor 已經被選中,然後點擊 Next,如 圖 8 所示。
圖 8. 創建 EAR 文件
選擇 EGL Support with JSF Components 7.0,並點擊 Finish,如圖 9 所示。
圖 9. 選擇 Project Facet
耐心一點,因為這個 過程需要一些時間來完成。記住您是在 VMWARE 之下操作,這需要額外的負載資源。
如果出現了 Open Associate Perspective 對話框,那麼就點擊 No。您並不需要 J2EE (Java™2 Platform, Enterprise Edition)視角,但是 您需要 Web 視角。
使用 Data Access 向導
選擇 File > New > Other。接著會出現一個對話框讓您選擇一個向導。
輸入 egl,並選擇 EGL Data Access Application,如圖 10 所示。
點擊 Next。
圖 10. 選擇一個向導
EGL Data Access Application 對話框會顯示出來。這就是您創建 EGL 應用程序的地方,它能 夠在一個 DB2 表格中創建、讀取、更新以及刪除(CRUD)行。
首先,您需要指定使用哪一個表格。
在 Project Name 區域中,使用下拉菜單以選擇 LAB4_Web,如圖 9 所示。
因為您想自動 創建 Web 頁面,所以確定 Create web pages 已被選中。
因為您需要創建對數據庫的鏈接,所以 點擊 New。
圖 11. 定義項目設置
您將會使用到 DB2, 而 Rational Business Developer 允許您使用其他的數據庫(例如 Oracle、SQL Server,等等)。您將 會訪問到工作站內定義的一個表格,而且可以使用在其他平台中定義的表格,例如 IBM® z/OS® 。
指定新的鏈接參數,如圖 12 所示。
展開 DB2 UDB 並選擇 v8.2。
對於數據庫 SAMPLE 使用默認值。
輸入 db2admin 作為 User ID 和 Password。
如果想要查看您是否可以訪問該數據庫,那麼您可以點擊 TestConnection。
圖 12. 指定鏈接參數
您必須得到鏈接成功 的信息,如圖 13 所示。在該信息出現之後,點擊 OK。如果期間發生了什麼錯誤,那麼可能是因為您輸 入了一個不合適的 ID 或者密碼。
圖 13. 成功的信息
點擊 Finish 以創建 數據庫鏈接。
當數據庫創建起鏈接之後,會顯示出 所有數據庫表格的列表,因為您並沒有使用任 何選擇手段。如果您的數據庫含有大量的表格,那麼一個限制范圍的手段還是需要的。
切換至 Table Name 並選擇 DB2ADMIN.STAFF (如圖 14 所示),因為這就是您想要生成 EGL CRUD (創建,替換,更新,以及刪除)應用程序的表格。
確定 Create Web pages 已經被選中了 (因為您想自動創建 Web 頁面),並點擊 Next。注意 Rational Business Developer 允許您一次選中 不止一個表格。
圖 14. 定義項目設置
Define the Fields 頁面對於您在前面頁面中選擇的每一個表格都有一項設置。因為您只有一個表格(STAFF),所以您只有 一項設置。在該頁面中,您可以為 STAFF 表格選擇主字段,以及能夠搜索的字段。
選擇 ID 作為 主字段而 NAME 作為 UI 字段,如圖 15 所示。Web 頁面使用字段 NAME 作為搜索的元素。
點擊 Next。
圖 15. 定義字段
為字段名接受默認值 然後點擊 Next,如圖 16 所示。
圖 16. 配置字段
定義項目創建選項, 如圖 17 所示。
在 Default package name 區域中,輸入 sample 作為將會包含新 EGL 部分的根包裹的名字。
在 Data access method 下面,選擇 EGL Libraries (因為您想要創建鏈接庫部分)。注意您還 可以創建服務部分。
選擇 Qualify table names with schema 然後點擊 Next。
圖 17. 指定項目創建選項
展開 Table 以及 Field 元素,以查看大概有哪些被創建了,如圖 18 所示,然後點擊 Finish。
圖 18. EGL Data Access 應用程序總結
如果出現了 Incomplete Deployment Settings 對話框,那麼就點擊 OK。
使用 Project Explorer 視圖,展 開 LAB4_Web > EGLSource > sample.data,然後雙擊 Staff.egl。您將會看到映射 DB2 表格員工 的 EGL 聲明,如圖 19 所示。
注意列的屬性(較小的整數,整數等等)並不是在這裡定義的。但 是它們指向另外一個名為 sample.primitivetypes.data的包裹,稍後您將會看到這一點。
圖 19. 映射 Staff DB2 表格
展開 sample.primitivetypes.data 並雙擊 DataDefinitions.egl 文件,如圖 20 所示。這是定義 EGL 數據項的最好方式,因為您可以在任何您想這樣做的時候做。如果您在這裡將其更改了,那麼所有使 用到該項的地方都會得到更改。
圖 20. 數據定義代碼
展開 sample.access 包裹,雙擊 StaffLib.egl,並浏覽直到您看到 GetStaff 函數為止。您也許 還會使用到 Outline 視圖以輕松地找到函數的位置(您可以點擊 Outline 項以做到這一點),如圖 21 所示。
這就是您將會使用以對表格執行一次 SQL SELECT 查詢的函數。該文件就是將會用於執行所有數 據庫 I/O 操作的 EGL 鏈接庫。
圖 21. GetStaff 函數的代碼
使用編輯器,將鼠標移動至 get 聲明,右擊,並選擇 SQL Statement > View,如圖 22 所示 (您還可以使用 Ctrl+Shift+V)。
可能出現的錯誤
如果您遇到了以下的一些錯誤,那麼可能是因為您沒有使用指向 DB2 數據庫的合適 Rational Business Developer :IWN.VAL.4594.e 0/0。獲取 SQL 識別因為沒有選中任何鏈接。選擇 EGL SQL Database Connection Preference 頁面。
這是解決問題的一種方式:
選擇 Windows > Preferences > EGL > SQL Database Connections。
點擊 New,並創建一個對 SAMPLE DB2 數據庫的鏈接。
圖 22. 查看聲明的細節信息
在執行 get 時,您也行會看到 SQL SELECT,如圖 23 所示。注意生成了 where 聲明,因為 ID 就是主字段。
點擊 Validate。
圖 23. 選擇聲明的細節信息
DB2 表格將會執行一次 SQL 驗證。如果出現了什麼錯誤,那麼可能是因為鏈接很糟糕,或者 DB2 數據庫尚未啟動。
目前為止您都做了什麼
Data Access 向導創建了以下四個系列的資源:
在默認的 Data Access Library SQL 聲明中使用到的 Control Records。
包含 EGL 數據訪問聲明(基本數據訪問設計模式)的 Data Access Libraries,它為 SQL 聲明 而生成,如前面所示。
作為 sqlRecord 類型 EGL 記錄的 Data Access Records,它參與了 Java 和 SQL 的生成過程, 因此支持您書寫高抽象層次的代碼,如前面所示。
位於 DataDefinitions.egl 文件中的 EGL DataItems。該文件包含了每一個導入表格中每一列的 默認類型定義,如前面所示。
點擊 OK 以跳過該對話框,如圖 24 所示。
圖 24. 驗證 SQL 聲明
不要作出任何更改, 並通過點擊 Ctrl+Shift+F4 來關閉所有打開的文件。
生成代碼
在這裡,您可以調試生成 的 EGL 代碼,但是在本教程中,您需要查看它正在運行,您需要生成 Java™代碼。
使用向 導來生成 Java 代碼:使用 Project Explorer 視圖,右擊 LAB4_Web 並選擇 Generate With Wizard, 如圖 25 所示。
圖 25. 開始生成代碼
驗證所有的部分對生 成都選中了,如圖 26 所示,然後點擊 Finish。對於這個生成過程您可以接受所有默認的 Build Descriptors。
圖 26. 選擇所有需要生成的部分
在 EGL Generation Results 項中評審生成的結果,如圖 27 所示。點擊左邊的每一個組件並確保沒有出現什麼錯誤。
圖 27. 結果
目前為止您都做了 些什麼
您創建了一個含有一個應用程序的 EGL Web Project,它反過來會訪問一個 DB2 表格。它 在 Web 上還含有一些頁面。
使用 EGL Data Access 向導,您創建的代碼,會與在您電腦上(但 是該表格可能位於遠程的位置上)定義的 STAFF DB2 表格協同工作。生成的 EGL 代碼是:
映射 STAFF DB2 表格的 EGL Data Access Record
訪問 DB2 表格的 EGL 鏈接庫(創建,讀取,更新以 及刪除)
映射 DB2 列的 EGL Data 項
EGL DB2 Control Records 以及代碼
從創 建的 EGL 源中生成 Java 代碼。
展開 Java Resources:src 文件夾以查看生成的 Java 代碼,如 圖 28 所示。
圖 28. 在 Project Explorer 視圖中生成的代碼
現在您 可以測試生成的 Java 代碼了。
現在您可以創建一個涉及到生成代碼的 Web 頁面。
驗證 生成的 Web 頁面
向導會生成兩個 JSF 頁面:staffListPage 和 allDetailPage.jsp。用戶可以 按照他們的意願來對其作出更改。為了盡可能快的完成本教程的學習,所以您只會看到生成的代碼,而沒 有作出任何更改。
編輯 staffListPage 頁面
展開 WebContent 並雙擊 staffListPage.jsp,如圖 29 所示。
圖 29. STAFF List Page 的細節信息
對於 JSP 上的游標,右擊並選擇 Edit Page Code,如圖 28 所示。它將會編輯處理該頁面的 EGL 代碼。
圖 30. 編輯代碼
使用 Outline 視圖 來定位 staffSearch 函數,如圖 31 所示。這是在點擊 Search 按鈕時將會執行的代碼。它涉及到 Stafflib EGL Library 並執行 GetStaffList 函數。
圖 31. 使用 Outline 視圖來得到函數的細 節信息
編輯 staffDetailPage 頁面
展開 WebContent 並雙擊 staffDetailPage.jsp 文件,如圖 32 所示。它 就是執行 CRUD 操作的頁面。
圖 32. STAFF Details 頁面
點擊 Ctrl + Shift + F4 以關閉所有正在編輯的文件,不作出任何更改。
通過使用 WebSphere Application Server 來部署和測試程序
在您部署代碼之前,您需要將該項目與合適的正在使用的 數據庫聯系起來。否則在運行時,數據庫鏈接將會失敗。它可以通過執行以下這些步驟來得到實現:
右擊項目 LAB4_web 並選擇 Properties。
當頁面 Properties 為 LAB4_Web 頁面打開時 ,選擇 EGL Runtime Data Source,並使用下拉列表,選擇在前面創建的 SAMPLE1 鏈接,如圖 33 所示 。
點擊 OK 以及 Yes以更新 EGL 構建選項。
圖 33. 定義 EGL Runtime Data Source
在構建選項更新之後 再次更新代碼。
右擊 LAB4_Web 並選擇 Generate。
按照以下步驟來使用 WebSphere Application Server 以部署和測試程序:
展開 WebContent,右擊 staffListPage.jsp,選擇 Run As > Run on Server,如圖 34 所示。
因為您是在 VMWARE 之下執行操作,所以啟動又需 要花費一定的時間。
圖 34. 啟動服務器
當 Run on Server 對話框出現時,定義服務器環境,如圖 35 所示:
選擇 WebSphere v6.1 Server。
選擇 Set server as project default。
點擊 Finish。
圖 35. 定義一個新的服務器
該操作在 VMWARE 下 運行時有需要花費一定的時間。操作的狀態在操控台上顯示出來。當該操作成功完成時,您將會看到一條 顯示 Initialization successful 的信息。
然後 Java 代碼會得到公布,它會產生一個靜態的 Web 頁面,如圖 36 所示。
圖 36. 靜態 Web 頁面
為了搜索所有名字以 字母 M 開始的名字(圖 37):
使用下拉菜單以選擇 like。
輸入 M% (字母 M 加上百分號)。
點擊 Search。
圖 37. 搜索以 M 起始的名字
所有以字母 M 開始 的名字都會被列出來,如圖 38 所示。點擊 160。
圖 38. 列表搜索結果
細節信息頁面會顯示出來,如圖 39 所示。
圖 39. 細節信息頁面
編輯一個字段(例如,將 YEARS 從 7 更改為 12),然後點擊 Update。您就可以確認更新, 如圖 40 所示。
圖 40. 確認更新
點擊 OK,而 Summary List 頁面會顯示出更新後的字段值(圖 41)。
圖 41. 更新 3 個字段值
您可以隨便編輯和探索生成的資源。
點擊 Ctrl + Shift + F4 以關閉所有的頁面。
關閉 Rational Developer for System z。
至此,您已經完成了本教程的學習。