样例项目 |
是否只想试用某些 J2EE 项目?在 IDE 中,选择“文件”>“新建项目”,然后展开“样例”文件夹。IDE 中包含 Java BluePrints 解决方案目录中的样例。 |
本教程将向您介绍创建具有容器管理持久性(CMP 实体 Bean)的实体 Enterprise JavaBeansTM 组件的基本步骤。我们将使用 NetBeansTM IDE 5.0 通过现有的 Apache Derby 数据库生成 CMP 实体 Bean。然后创建一个简单的会话 Bean 来访问数据库信息和 Web 模块客户端。
本教程是一个有关 NetBeans IDE 5.0 中的 J2EE 开发功能的快速指南,而不是如何编写企业应用程序的说明性指南。尽管您无需了解 J2EE 技术的一些知识也能完成本教程,但建议初学者最好还是先从 NetBeans IDE 中的 J2EE 教程开始学起。
注意:本教程旨在向您介绍如何使用 Sun JavaTM System Application Server 8.2 及其捆绑的数据库服务器 Apache Derby。早期版本的 Sun Java System Application Server 使用 PointBase 作为捆绑的数据库服务器。要以 PointBase 为例来完成此教程,请参见使用 NetBeans IDE 4.1 开发 J2EE 应用程序的快速入门指南。
本文档包含以下主题:
在开始之前,必须确保安装了所需的所有软件。此外,还必须配置 Derby 数据库,并填充用来生成 CMP 实体 Bean 的数据库表。
首先,需要在计算机上安装 Sun Java System Application Server Platform Edition 8.2(下载)。
注意:如果在 JDK 5.0 中运行 IDE,则应用服务器还需要使用 JDK 5.0 中的虚拟机。要设置 IDE 使用的 JDK,请打开 IDE_INSTALL_DIR/etc/netbeans.conf,并在 netbeans_jdkhome 属性中输入 JDK 的路径。要设置应用服务器使用的 JDK,请编辑 AS_INSTALL_DIR/config/asenv(.bat) 文件并更改 AS_JAVA 环境变量。
安装应用服务器后,需要在 NetBeans IDE 中注册该服务器。请注意,如果下载和安装的 NetBeans IDE 版本与应用服务器捆绑在一起,则不必执行此步骤。IDE 知道捆绑的应用服务器的位置。
最后,启动应用服务器:
在本教程中,您将通过 Derby 数据库服务器中包含的其中一个表来生成 CMP Bean。Derby 数据库服务器包含在 Sun Java System Application Server 8.2 下载文件中。
注意:如果修改了 sample 数据库,可使用此 SQL 脚本对其进行重写。
对 Enterprise Bean 进行编码非常容易。IDE 会兼顾所有实现细节,因此您可以集中精力对 EJB 模块的业务逻辑进行编码。
在本示例中,我们将创建一个企业应用程序项目作为 Web 模块和 EJB 模块的容器。通过使用企业应用程序模板,您可以自动为 Web 模块和 EJB 模块创建项目。
现在,我们将生成访问 sample 数据库的实体 Bean。对于程序要访问的每个表,都需要一个对应的实体 Bean。
现在,我们将创建一个会话 Bean,用来处理 Web 应用程序客户端对实体 Bean 中的信息的访问。我们将创建一个空会话 Bean,生成对实体 Bean 的调用,然后添加一些 business 方法。
private ejb.CustomerLocalHome custHome;
custHome = lookupCustomerBean();
元素 | 值 |
方法名 | getCustomerInfo |
返回类型 | 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 模块进行编码,该模块将为实体 Bean 提供用户接口。Web 模块包含一个 Servlet,允许用户按客户编号对客户进行搜索。
在上一节中,我们在调用 Enterprise Bean 时通过 IDE 生成了内联查找代码。在此节中,我们将创建一个定制服务定位器,IDE 将在生成对 Enterprise Bean 的调用时用到它。我们的服务定位器没有任何特殊功能,但您可以定制企业应用程序查找 Enterprise Bean 的方式。
在最后一步中,我们将向 Web 模块添加一个 Servlet,通过它可以查找并显示 CUSTOMER 表中的每个客户的信息。
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 应如此处所示。
现在,就可以将企业应用程序部署到应用服务器中了。不需要再对部署描述符进行其他配置。IDE 已经配置了部署描述符,并为企业应用程序准备了新的连接池和数据源。
缺省情况下,Web 应用程序在运行时会显示其 index.jsp 页。由于我们的 index.jsp 是空的,因此希望 CustomerBook 项目显示 CustomerDetail Servlet。
您应在外部浏览器中看到以下页面。在键入某一客户编号并按 Enter 键时,页面中应显示该客户的信息。
一些常见问题包括:
注意:要查看服务器日志,请转至“运行环境”窗口,右键单击应用服务器节点,然后选择“查看服务器日志”。
有关使用 NetBeans IDE 5.0 的详细信息,请参见以下资源:
要发送意见和建议、获得支持以及随时了解 NetBeans IDE J2EE 开发功能的最新开发情况,请加入 nbj2ee@netbeans.org 邮件列表。
联系客服