| 樣例項目 |
| 是否只想試用某些 J2EE 項目?在 IDE 中,選擇“文件”>“新建項目”,然后展開(kāi)“樣例”文件夾。IDE 中包含 Java BluePrints 解決方案目錄中的樣例。 |
本教程將向您介紹創(chuàng )建具有容器管理持久性(CMP 實(shí)體 Bean)的實(shí)體 Enterprise JavaBeansTM 組件的基本步驟。我們將使用 NetBeansTM IDE 5.0 通過(guò)現有的 Apache Derby 數據庫生成 CMP 實(shí)體 Bean。然后創(chuàng )建一個(gè)簡(jiǎn)單的會(huì )話(huà) Bean 來(lái)訪(fǎng)問(wèn)數據庫信息和 Web 模塊客戶(hù)端。
本教程是一個(gè)有關(guān) NetBeans IDE 5.0 中的 J2EE 開(kāi)發(fā)功能的快速指南,而不是如何編寫(xiě)企業(yè)應用程序的說(shuō)明性指南。盡管您無(wú)需了解 J2EE 技術(shù)的一些知識也能完成本教程,但建議初學(xué)者最好還是先從 NetBeans IDE 中的 J2EE 教程開(kāi)始學(xué)起。
注意:本教程旨在向您介紹如何使用 Sun JavaTM System Application Server 8.2 及其捆綁的數據庫服務(wù)器 Apache Derby。早期版本的 Sun Java System Application Server 使用 PointBase 作為捆綁的數據庫服務(wù)器。要以 PointBase 為例來(lái)完成此教程,請參見(jiàn)使用 NetBeans IDE 4.1 開(kāi)發(fā) J2EE 應用程序的快速入門(mén)指南。
本文檔包含以下主題:
在開(kāi)始之前,必須確保安裝了所需的所有軟件。此外,還必須配置 Derby 數據庫,并填充用來(lái)生成 CMP 實(shí)體 Bean 的數據庫表。
首先,需要在計算機上安裝 Sun Java System Application Server Platform Edition 8.2(下載)。
注意:如果在 JDK 5.0 中運行 IDE,則應用服務(wù)器還需要使用 JDK 5.0 中的虛擬機。要設置 IDE 使用的 JDK,請打開(kāi) IDE_INSTALL_DIR/etc/netbeans.conf,并在 netbeans_jdkhome 屬性中輸入 JDK 的路徑。要設置應用服務(wù)器使用的 JDK,請編輯 AS_INSTALL_DIR/config/asenv(.bat) 文件并更改 AS_JAVA 環(huán)境變量。
安裝應用服務(wù)器后,需要在 NetBeans IDE 中注冊該服務(wù)器。請注意,如果下載和安裝的 NetBeans IDE 版本與應用服務(wù)器捆綁在一起,則不必執行此步驟。IDE 知道捆綁的應用服務(wù)器的位置。
最后,啟動(dòng)應用服務(wù)器:

在本教程中,您將通過(guò) Derby 數據庫服務(wù)器中包含的其中一個(gè)表來(lái)生成 CMP Bean。Derby 數據庫服務(wù)器包含在 Sun Java System Application Server 8.2 下載文件中。

注意:如果修改了 sample 數據庫,可使用此 SQL 腳本對其進(jìn)行重寫(xiě)。
對 Enterprise Bean 進(jìn)行編碼非常容易。IDE 會(huì )兼顧所有實(shí)現細節,因此您可以集中精力對 EJB 模塊的業(yè)務(wù)邏輯進(jìn)行編碼。
在本示例中,我們將創(chuàng )建一個(gè)企業(yè)應用程序項目作為 Web 模塊和 EJB 模塊的容器。通過(guò)使用企業(yè)應用程序模板,您可以自動(dòng)為 Web 模塊和 EJB 模塊創(chuàng )建項目。
現在,我們將生成訪(fǎng)問(wèn) sample 數據庫的實(shí)體 Bean。對于程序要訪(fǎng)問(wèn)的每個(gè)表,都需要一個(gè)對應的實(shí)體 Bean。

現在,我們將創(chuàng )建一個(gè)會(huì )話(huà) Bean,用來(lái)處理 Web 應用程序客戶(hù)端對實(shí)體 Bean 中的信息的訪(fǎng)問(wèn)。我們將創(chuàng )建一個(gè)空會(huì )話(huà) Bean,生成對實(shí)體 Bean 的調用,然后添加一些 business 方法。
private ejb.CustomerLocalHome custHome;
custHome = lookupCustomerBean();
| 元素 | 值 |
| 方法名 | getCustomerInfo |
| 返回類(lèi)型 | String |
| 參數 | int custId |
| 異常 | javax.ejb.FinderException |
public String getCustomerInfo(int custId) throws javax.ejb.FinderException { ejb.CustomerLocal customer = custHome.findByPrimaryKey(new Integer(custId)); return "Name: " + customer.getName() + ", E-mail: " +customer.getEmail(); } 最終的 CustomerFacadeBean.java 文件應如此處所示。
現在,我們需要對 Web 模塊進(jìn)行編碼,該模塊將為實(shí)體 Bean 提供用戶(hù)接口。Web 模塊包含一個(gè) Servlet,允許用戶(hù)按客戶(hù)編號對客戶(hù)進(jìn)行搜索。
在上一節中,我們在調用 Enterprise Bean 時(shí)通過(guò) IDE 生成了內聯(lián)查找代碼。在此節中,我們將創(chuàng )建一個(gè)定制服務(wù)定位器,IDE 將在生成對 Enterprise Bean 的調用時(shí)用到它。我們的服務(wù)定位器沒(méi)有任何特殊功能,但您可以定制企業(yè)應用程序查找 Enterprise Bean 的方式。
在最后一步中,我們將向 Web 模塊添加一個(gè) Servlet,通過(guò)它可以查找并顯示 CUSTOMER 表中的每個(gè)客戶(hù)的信息。
protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<html>"); out.println("<head>"); out.println("<title>Servlet customerDetail</title>"); out.println("</head>"); out.println("<body>"); out.println("<h1>Servlet customerDetail at " + request.getContextPath () + "</h1>"); String customerNr = request.getParameter("customer_nr"); if((customerNr != null) && !(customerNr.equals(""))) { try{ ejb.CustomerFacadeRemote custFacade = lookupCustomerFacadeBean(); out.println("Customer‘s info for nr. " + customerNr + ": " + custFacade.getCustomerInfo( Integer.parseInt(customerNr))); }catch(javax.ejb.FinderException ex){ out.println("Customer with nr. " + customerNr +" not found"); } } out.println("<form>"); out.println("Customer number: <input type=‘text‘ name=‘customer_nr‘ />"); out.println("<input type=submit value=Select />"); out.println("</form>"); out.println("</body>"); out.println("</html>"); out.close(); } 最終的 CustomerDetail.java Servlet 應如此處所示。
現在,就可以將企業(yè)應用程序部署到應用服務(wù)器中了。不需要再對部署描述符進(jìn)行其他配置。IDE 已經(jīng)配置了部署描述符,并為企業(yè)應用程序準備了新的連接池和數據源。
缺省情況下,Web 應用程序在運行時(shí)會(huì )顯示其 index.jsp 頁(yè)。由于我們的 index.jsp 是空的,因此希望 CustomerBook 項目顯示 CustomerDetail Servlet。
您應在外部瀏覽器中看到以下頁(yè)面。在鍵入某一客戶(hù)編號并按 Enter 鍵時(shí),頁(yè)面中應顯示該客戶(hù)的信息。

一些常見(jiàn)問(wèn)題包括:
注意:要查看服務(wù)器日志,請轉至“運行環(huán)境”窗口,右鍵單擊應用服務(wù)器節點(diǎn),然后選擇“查看服務(wù)器日志”。
有關(guān)使用 NetBeans IDE 5.0 的詳細信息,請參見(jiàn)以下資源:
要發(fā)送意見(jiàn)和建議、獲得支持以及隨時(shí)了解 NetBeans IDE J2EE 開(kāi)發(fā)功能的最新開(kāi)發(fā)情況,請加入 nbj2ee@netbeans.org 郵件列表。
聯(lián)系客服