當您在使用基於組件的企業 Java beans(EJB)體系結構編寫一個應用程序時,這個應用程序是可擴展的、可處理事務的而且是多用戶安全的。您只需一次編寫應用程序,然後就可以將它部署到任何一個支持企業 Java beans 規范的服務器平台上。 Java 2 企業版應用程序使用 EJB 實現服務器端事務組件,EJB 包括會話 beans 和實體 beans。會話 beans 描述的是事務服務,不在用戶間共享。實體 beans 是描述持久數據的多用戶、分布式事務處理對象。
開始之前 遵循“在 iSeries 上安裝 Linux”或“在 pSeries 上安裝 Linux”中的步驟在 iSeries 上的一個邏輯分區上安裝 SuSE Linux Enterprise Server (SLES) 8。 遵循“Installing DB2 for Linux on iSeries and pSeries”中的步驟在 iSeries 上安裝並啟動用於 Linux 的 DB2。您可以自 Windows 中使用虛擬網絡處理(Virtual Network Computing,VNC)客戶機 vncviewer 訪問 iSeries 上的 Linux。請參閱那篇文章中的說明來使用 vncviewer。 遵循“在 iSeries 和 pSeries 上安裝用於 WebSphere Application Server V5.0 for Linux”中的步驟安裝 WebSphere Application Server V5.0.2。啟動 server1,如下: 圖 1. 啟動 server1 用您的浏覽器訪問 http://SLES8WAS:9090/admn(用您的 iSeries 系統的名字代替這個例子中的 SLES8WAS)來啟動 WebSphere 管理控制台。 圖 2. 啟動管理控制台 圖 3. WebSphere 管理控制台 創建一個 JDBC 提供者 安裝的應用程序使用 JDBC(Java Database Connectivity)提供者來訪問數據庫中的數據。下載 jt400.jar 文件 並將其放入一個名為 /opt/jtopen 的目錄中。JTOpen 是用於 Java 的 IBM 工具箱的一個開放源代碼版本,它的更新頻率比得到許可的程序版本更高。
在管理控制台中創建一個 JDBC 提供者: 在管理控制台拓撲樹中,展開 Resources 然後單擊 JDBC Providers。 在 JDBC Providers 頁,指定 Server 作為資源的范圍。單擊 Apply。 單擊 New。 在 JDBC Providers 域,選擇 DB2 UDB for iSeries (Toolbox) driver。 單擊 Apply。 在 classpath 域,將 ${OS400_TOOLBOX_JDBC_DRIVER_PATH}/jt400.jar 改為 /opt/jtopen/jt400.jar。 單擊 Apply 或 OK。 單擊工具欄上的 Save,保存配置。 再次單擊 Save,用您的改變去更新主倉庫(master repository)。 圖 4. 創建一個 JDBC 提供者 圖 5. 創建一個 JDBC 提供者(續) 創建一個 J2C 認證數據條目 Java 2 連接器(J2C)認證數據條目定義了您可以在源適配器和 JDBC 之間共享的認證數據。
為創建一個 J2C 認證數據條目,需要做: 在管理控制台拓撲樹中,展開 Security 然後單擊 J2C Authentication Data。 單擊 New。 在 Alias 域中指定 johndoe/linuxauth。 在 User Id 域中指定您的 iSeries userid。 在 PassWord 域中指定您的 iSeries 口令。 單擊 OK 或 Apply。(沒有對 user ID 和口令進行確認) 單擊工具欄上的 Save,保存修改。 再次單擊 Save,用您的改變去更新主倉庫。 圖 6. 創建一個 J2C 認證數據條目 配置一個數據源 創建了一個 JDBC 提供者後,就需要為這個提供者配置一個數據源,以使您的應用可以訪問數據庫中的數據。JDBC 提供者指定 JDBC 驅動程序實現類。為配置一個數據源,需要做: 在管理控制台的 JDBC Providers 頁上,單擊您想為其配置數據源的 DB2 UDB for iSeries (toolbox) JDBC 提供者。 在下一頁,單擊 Data Sources。 在 Data Sources 頁,單擊 New。 在 Name 域中指定 Default Datasource。 在 JNDI Name 域中指定 DefaultDatasource。 注意:HitCount EJB 示例用 Default Datasource 作為 Data Source Name,用 DefaultDatasource 作為 JNDI Name。 單擊 Container managed persistence 以在容器管理持久性(container managed persistence,CMP)中使用這個數據源。 在 Component-managed Authentication Alias 下的列表中選擇 johndoe/linuxauth。 在 Component-managed Authentication Alias 下的列表中選擇 johndoe/linuxauth。 單擊 Apply。 單擊 Custom properties。 單擊 serverName。 在 Value 域中,指定您的 iSeries 機器名。 單擊 Apply。 單擊 libraries。 在 Value 域中,指定 HITCOUNTDB。 單擊 Apply。 單擊工具欄上的 Save,保存配置。 再次單擊 Save,用您的改變更新主倉庫。 圖 7. 配置一個數據源 圖 8. 配置一個數據源(續) 測試數據源參數 在定義並保存了 Default Datasource 後,您可以使用 Test Connection 函數來確保數據源定義中的參數是正確的。 在管理控制台拓撲樹中,展開 Resources 並單擊 JDBC Providers。選擇 DB2 UDB for iSeries (Toolbox) 和 Default Datasource 然後單擊 Test connection。如果您的配置是正確的,將在消息區域顯示出如下的成功消息: 圖 9. 成功的連接 運行 HitCount 示例應用程序 HitCount 示例應用程序計算一個頁面被訪問了多少次。這個應用程序包括一個 Java Servlet、一個 JavaServer Pages(jsp)文件和一個企業 bean。 HitCount 示例應用程序被安裝為 WebSphere Application Server 例子的一部分,已經在 WebSphere Application Server 的默認實例中運行。它通常用來確認您的應用程序服務器是否已經正確設置。這個附帶的示例當前通過 Deafault Datasource 使用 Cloudscape 數據庫。在 配置一個數據源 步驟中,我們在 DB2 UDB for iSeries (Toolbox) JDBC Providers 下創建了 Default Datasource。
創建 HitCount 需要的數據庫表 您必須創建 HitCount 示例應用程序所需要的底層數據庫表。當使用應用程序裝配工具將 bean 打包到 EJB 模塊中時,已經為每個實體企業 bean 創建了一個數據定義語言(Data Definition Language,DDL)腳本。這個 DDL 腳本稱為 Table.ddl,當它打包到 EJB 模塊中後存儲在企業 bean 的 JAR 文件中。這個 DDL 腳本中包含了為實體 bean 創建底層數據庫表所需要的命令。Table.ddl 如下: Table.ddl CREATE COLLECTION HITCOUNTDB; CREATE TABLE HITCOUNTDB/INCREMENT (PRIMARYKEY VARCHAR(250) NOT NULL, THEVALUE INTEGER NOT NULL);
運行 Table.ddl 腳本: 啟動 iSeries Navigator(導航器)。 展開您要創建數據庫文件的系統的 iSeries 圖標。 展開 Database,然後在系統數據庫上右擊。 選擇 Run SQL Scripts...。 選擇 File > Open。 將類型視圖的 Files 改變為 All Files ("*.*")。 導航到 Table.ddl 文件。 選擇 Run > All 來運行腳本中的所有命令。 選擇 View -> Job Log...,確認數據庫表已經成功創建。 選擇 File > Save,保存文件。 退出 Run SQL Scripts 應用程序。 退出 iSereis Navigator。 對 HitCount 示例應用程序和數據庫表來說,最簡單的就是將數據庫表授權給所有用戶。在 iSeries 服務器命令行中運行下面的命令,為所有用戶將權限改變為 *ALL: OBJ(HITCOUNTDB) OBJTYPE(*LIB) USER(*PUBLIC) AUT(*ALL) GRTOBJAUT OBJ(HITCOUNTDB/*ALL) OBJTYPE(*ALL) USER(*PUBLIC) AUT(*ALL) 運行 HitCount 示例 在您的浏覽器中訪問 http://SLES8WAS:9080/HitCount.jsp(用您的 iSeries 系統的名字代替
這個例子中的 SLES8WAS),如下: 圖 10. 運行 HitCount 示例 - EJB(CMP) 在 Select a method of execution 下選擇 Enterprise Java Bean (CMP),然後單擊 Increment,
然後您將看到下面的結果: 圖 11. 運行 HitCount 示例 - EJB(CMP),續