站内搜索: 请输入搜索关键词

当前页面: 开发资料首页Netbeans 专题NetBeans 4.1 端到端演示

NetBeans 4.1 端到端演示

摘要: NetBeans 4.1 端到端演示 反馈 作者及整理人: Brian Leonard '); //--> Brian Leonard Brian Leonard 和 Gregg Sporar ');...
NetBeans 4.1 端到端演示

概览

该演示将与 NetBeans 4.1 结合使用。如果您使用的是 NetBeans 5.0,请使用此版本

该演示设计用于展示 NetBeans 4.1 的端到端应用程序开发支持 - J2EE 到 J2SE 到 J2ME。同时,将展示 NetBeans 中许多有用的功能,例如重构和 HTTP 监控。我们花费了一些时间将该脚本作为资源提供给有兴趣将 NetBeans 展示给其他人的任何人。

首先,通过创建 CMP 实体 bean,来展示 NetBeans 对创建 EJB 的支持。然后创建一个简单的 Java 对象,以显示调用 EJB 是如何简单。接下来,将创建一个 JSP 来展示 NetBeans 对 JSP 语法和 Java Standard Tag Library (JSTL) 的支持。同时,将演示 HTTP 监视器、重构支持和图形化部署描述符编辑器。再将 J2EE 应用程序作为 web 服务公开。最后,将创建一个访问 J2EE 应用程序并展示 MIDlet 可视化设计器的 MIDlet。

演示准备

NetBeans 4.1 和 J2EE 1.4 参考实现

NetBeans 中的 J2EE 支持需要安装 J2EE 1.4 SDK。

  • 如果没有 NetBeans 4.1 或 J2EE 1.4 SDK,下载并安装 AS 8.1 Bundle Installer。
  • 如果有 NetBeans 4.1,但没有 J2EE 1.4 SDK,则下载并安装 J2EE 1.4 SDK 和 Sun Java System Application Server Platform Edition 8.1。然后,启动 NetBeans 并切换到 Runtime 选项卡 (Ctrl+5)。右键单击 Servers 节点,然后添加 Sun Java System Application Server 8.1。
  • 配置 HTTP Monitor,然后在调试模式下启动 Application Server:
    • 在 Runtime 选项卡中,右键单击 Sun Java System Application Server 条目,然后选择 Properties
    • 选中 Enable HTTP Monitor 复选框,然后单击 OK 按钮。
    • 在调试模式下,启动 Application Server。

Mobility Pack

  • 下载并安装 NetBeans 4.1 Mobility Pack

演示

使用数据库浏览器

  1. Runtime 选项卡上,单击 Databases 条目旁边的加号符号展开该条目。
  2. 右键单击 Pointbase sample 数据库并选择 Connect 来连接该数据库。默认的密码是 pbpublic
  3. 单击 sample 数据库条目旁边的加号符号展开该条目。
  4. 展开 Tables 条目。
  5. 右键单击 CUSTOMER_TBL 条目,并选择 View Data。打开的窗口会显示表中的数据。
  6. 展开 CUSTOMER_TBL 条目。
  7. 请注意 CUSTOMER_NUM 列旁边的红色图标。它指明表的主键码。
  8. 展开 Foreign Keys 条目,然后展开其下的两个条目。
  9. CUSTOMER_TBL 取决于 DISCOUNT_CODE_TBL 和 MICRO_MARKETS_TBL

创建一个项目和一个具有容器管理持久性的 EJB

  1. 新建一个名为 CustomerApp 的新企业应用程序项目
  2. 请注意一共会创建三个项目:CustomerAppCustomerApp-EJBModuleCustomerApp-WebModule。按照最后的部署,CustomerApp 代表 Enterprise ARchive(.ear 文件)。它仅是一个代表可部署对象的项目。CustomerApp-EJBModule 代表 Java ARchive(.jar 文件)且包含全部应用程序的 EJB。CustomerApp-WebModule 代表 Web ARchive(.war 文件)且包含全部 web 层组件(servlet、JSP、HTML 等)。
  3. 右键单击 CustomerApp-EJBModule 条目,然后选择 New > CMP Entity Beans from Database...
    • 选择 sample Pointbase 数据库作为 JDBC Connection。
    • 将包名称设置为 foo,然后单击 Next
    • 选择 CUSTOMER_TBL 表,然后单击 Finish
  4. 请注意以下内容已由向导创建:
    • Enterprise Beans 下的三个 EJB,分别用于:Customer 表、Discount 表和 MicroMarkets 表。
    • Configuration Files 下的 EJB 部署描述符。
    • Server Resources 下的 JDBC 资源和连接池属性。
    • Source Packages 下每个 EJB 的生成实现类和接口。
  5. 构建 CustomerApp-EJBModule 项目。

创建一个访问 CMP 的会话 Bean

  1. 右键单击 CustomerApp-EJBModule,然后选择 New > Session Bean...
  2. 键入 CustomerFacade 作为 Class Name,并指定 foo 作为包。创建远程接口和本地接口。然后单击 Finish
  3. 右键单击在编辑器窗口中打开的实现类,然后选择 EJB Methods > Add Business Method...
    1. 名称: getDiscount
    2. 返回类型: float
    3. 添加一个名为 name 的字符串参数类型。
  4. 再次右键单击实现类,然后选择 Enterprise Resources > Call Enterprise Bean。选择 CustomerTblEJB,然后单击 OK
  5. getDiscount() 方法中添加以下行。如果采取键入方式而不是复制粘贴,可以使用代码完成:
    public float getDiscount(String name) {
        float rate = 0;
        try {
            Iterator customers = lookupCustomerTblBean().findByName(name).iterator();
            CustomerTblLocal cust = (CustomerTblLocal) customers.next();
            rate = cust.getDiscountCode().getRate().floatValue();
        } catch (Exception e) {
            System.out.println("Ex: " + e);
        }
        return rate
  6. 按 Alt+Shift+F6 添加 Iterator 的输入。

创建会话 Bean 的定位器类

定位器让我们可以轻松地从下面 JSP 调用会话 bean。

  1. 右键单击 CustomerApp-WebModule,然后选择 New > Java Class
  2. 键入 Locator 作为 Class Name,并指定 foo 作为包。
  3. 再次右键单击实现类,然后选择 Enterprise Resources > Call Enterprise Bean。选择 CustomerFacadeSB,然后单击 OK
  4. lookupCustomerFacadeBean() 方法从 private 更改为 public

创建访问会话 Bean 的 JSP

  1. 右键单击 CustomerApp-WebModule 项目的 libraries 节点,然后添加 JSTL 1.1 库。
  2. 展开 CustomerApp-WebModule 项目的 Web Pages 节点,然后打开 index.jsp
  3. 将以下页面指令添加到文件顶部两个页面之后:<%@page import="foo.*">。键入这行指令以便用户可以看到 JSP 代码完成。
  4. 取消 JSTL taglib 指令注释
  5. 移除在 JSP 主体中默认生成的 HTML 代码。
  6. 在 JSP 主体中添加以下行。如果采取键入方式而不是复制粘贴,可以使用代码完成:
    <form method="get">
        Enter customer name: <input type="text" name="name">
        <br>
        <input type="submit" value="Ok">
    </form>
    
    <c:if test="${!empty param.name}">
    <% Locator l = new Locator();
    CustomerFacadeLocal c = l.lookupCustomerFacadeBean();%>
    <c:set var="name" value="${param.name}"/>
    <jsp:useBean id="name" type="java.lang.String" /> ${param.name} gets a <%= c.getDiscount(name) %>% discount. </c:if>
  7. 右键单击 CustomerApp,然后选择 Verify Project 来验证是否符合 J2EE。
  8. 运行 CustomerApp 项目。
  9. 浏览器将从 URL http://localhost:8081/CustomerApp-WebModule/ 开始。然后将显示 JSP 页面。输入用户名(如 MicroApple),然后单击 Submit 按钮。
  10. 在 NetBeans 中,单击 Files 选项卡。在每个项目下,有一个 dist 条目。展开这些 dist 条目查看创建的不同文件。
  11. 单击 Runtime 选项卡,然后展开 Servers 节点。
  12. 适当的应用程序已部署到 Sun Java System Application Server。展开 Applications 条目,然后展开 Enterprise Applications 条目显示 customerapp 条目。也可以展开 customerapp 条目,就会看到列出的 web 模块和 EJB 模块。
  13. 有一个独立的 JDBC 模块。展开它会显示 JDBC 资源连接池。
  14. 另外,在 index.jsp 和 CustomerFacade.java 的 getDiscount() 方法中设置断点。然后右键单击 CustomerApp 并选择 Debug Project。当调试器遇到断点后,将显示 NetBeans 窗口。使用调试器来单步调试 JSP 和 EJB 代码。

查看 HTTP 监视器

  1. 在 NetBeans 中,HTTP Monitor 在左侧显示记录(如果您没看到 HTTP 监视器,请查看上述演示准备)。单击用户刚请求的记录。所选记录将出现在右侧。
  2. 右键单击该记录,然后选择 Edit and Replay...
  3. 更改名称参数的值(如 Ford Motor Co),然后单击 Send HTTP Request。浏览器将显示请求的结果。

查看部署描述符编辑器

  1. 在 Projects 窗口中,展开 CustomerApp-EJBModule,再依次展开 Enterprise Beans 条目、CustomerTblEB 条目和 Local Methods 条目。
  2. 双击 findByName 方法查看 ejb-jar.xml 部署描述符。
  3. 当出现部署描述符编辑器的 General 视图。单击 Edit 查看 EJBQL。然后单击 Cancel 按钮。
  4. 单击顶部的 CMP Relationships 按钮显示 CMP Relationships 视图。选择一个,然后单击 Edit 查看其属性。然后单击 Cancel 按钮。
  5. 单击顶部的 XML 按钮查看新完成的 XML。

重构支持

  1. 在 Projects 窗口中,展开 CustomerApp-EJBModule,再依次展开 Enterprise Beans 条目、CustomerTblEB 条目和 Local Methods 条目。
  2. 右键单击 findByName 方法,然后选择 Refactor > Rename...。将名称更改为 findByCustomerName。在出现的预览窗口中,可以看到 NetBeans 处理了所有的 J2EE 重构问题:特别是标准继承的缺乏和部署描述符的更新。
  3. 按 F6 再次运行应用程序。

创建针对会话 Bean 的 Web 服务

  1. 创建新 Web 应用程序项目,CustomerWS
  2. 右键单击 CustomerWS 项目,然后选择 New > Web Service...。调用新 web 服务 CustomerWebService,然后指定包 foo
  3. 展开 CustomerWS 的 Web Services 条目,然后右键单击 CustomerWebSerivce 条目并选择 Add Operation。(也可以在 Impl 中右键单击)。
    1. 名称:getDiscountRate,类型: float
    2. 参数类型:String,名称:name
    3. 异常:Exception
  4. 右键单击并选择 Enterprise Resources > Call Enterprise Bean。选择 CustomerFacadeSB,设置 Referenced Interface to Remote,然后单击 OK
  5. 将以下代码添加到 getDiscountRate() 方法中:
    float rate = 0;
    try {
    CustomerFacadeRemote customer = lookupCustomerFacadeBean();
    rate = customer.getDiscount(name);
    } catch (Exception e) {
    e.printStackTrace();
    }
    return rate;
  6. 右键单击 CustomerWS 项目,然后选择 Deploy Project,以便部署新的 web 服务。
  7. 展开 CustomerWS 的 Web Services 条目,然后右键单击 CustomerWebService 条目并选择 Add to Registry...
  8. 单击 WSDL Url 对话框的 OK 按钮。这将新定义的 web 服务添加到由 NetBeans 维护的本地注册表。
  9. 单击 Runtime 选项卡。
  10. 展开 Web Services 节点直到获得 getDiscountRate 条目。
  11. 右键单击 getDiscountRate ,然后选择 Test Operation
  12. 为了测试 web 服务,请输入一些值 (MicroApple, Ford Motor Co),然后单击 Submit 按钮。

创建访问 Web 服务的 Web 服务客户端

  1. 创建新 Web 应用程序项目,CustomerWSClient
  2. 右键单击 CustomerWSClient 项目,然后选择 New > Web Service Client
  3. 指定 http://localhost:8080/CustomerWS/CustomerWebService?WSDL 作为 WSDL URL
  4. 如有必要,单击 Proxy Settings... 按钮,然后指定 HTTP 主机和端口号。
  5. 单击 Retrieve WSDL 按钮。
  6. 指定包名为 foo,然后单击 Finish 按钮。
  7. 右键单击 CustomerWSClient 项目,然后选择 New > Servlet...
  8. 指定 RateCheckServlet 作为 Class Name,并指定 foo 作为包。然后单击 Next 按钮。再单击 Finish 按钮。
  9. 右键单击 RateCheckServlet.javaprocessRequest() 方法,然后选择 Web Service Client Resources > Call Web Service Operation。从对话框中选择 getDiscountRate 条目,然后单击 OK
  10. 除了生成 lookup 方法,NetBeans 还将创建一个简单的方法调用。使用该代码进行替换:
  11. out.println("<H1>Discount Rate Web Service</H1>");
    out.println("<H2>Enter company name:</H2>");
    out.println("<form method=\"get\">");
    out.println("<input type=\"text\" name=\"name\" size=\"25\">");
    out.println("<br>");
    out.println("<p>");
    out.println("<input type=\"submit\" value=\"Get Discount\">");
    out.println("</form>");
    String name = request.getParameter("name");
    if ( name != null ) {
    try {
    float result = getCustomerWebServiceSEIPort().getDiscountRate(name);
    out.println("<p>" + name + " gets a :<b>" + result + " %</b> discount.</b>");
    } catch(java.rmi.RemoteException ex) {
    out.println("<p>Caught an exception <p>" + ex);
    }
    out.close();
    }

  12. 将更改保存到文件。
  13. CustomerWSClient 项目的 Relative URL 属性设置为 /RateCheckServlet
  14. 右键单击 CustomerWSClient 项目,然后选择 Run Project
  15. 输入公司名 (MicroApple, Ford Motor Co),然后单击 Get Discount 按钮。

创建 MIDlet 以访问 J2EE 应用程序

  1. 创建名为 MobileCustomerApplication 的新应用程序项目。取消选中 Create Hello MIDlet。
  2. 右键单击该项目,然后选择新的 File/Folder > MIDP > Wireless Connection Wizard
    Web 项目信息
    1. 请确保 CustomerWS 是 Web 应用程序
    2. 将 Servlet Class Name 设置为 EndToEndCustomerServlet
    输出服务
    1. 选择 CustomerWebServiceImpl > getDiscountRate
    客户端名称和位置
    1. 将 Client Class Name 设置为 EndToEndCustomerClient
    2. 包: foo
  3. 重新部署 CustomerWS。因为无线连接向导在 WebModule 中创建了 servlet 和支持类,因此上述操作是必要的。
  4. 按 F6 启动 MIDlet。
  5. 运行 MIDlet 以获得贴现率。MIDlet 是可用的,但是非常普通。同时,没有办法退出应用程序。我们来解决这个问题。
  6. 双击 EndToEndCustomerClientMVD.java 打开可视化编辑器。
  7. 双击 EndToEndCustomerClientMVD 选项卡来最大化该视图。查看其内容。
  8. 双击 list1 屏幕打开 Screen Designer
    1. 将文字更改为 Run Rate App
    2. Exit Command 拖曳到窗体,编辑其操作以退出应用程序
    3. 单击 Flow Design
  9. 使用 Edited Screen 组合框以切换到 form1
    1. 将文字更改为 Enter Customer Name
  10. 单击 Source 按钮,然后将“Method execution result”更改为“Discount Rate”
  11. 按 F6 启动 MIDlet,并注意您的更改。

清除

  1. 单击 Runtime 选项卡。
  2. Web Services 下,删除 CustomerWebService 条目。
  3. 在 SJS AS 的 Enterprise Applications 下取消部署 customerapp
  4. 关闭这三个项目。
  5. 删除这三个项目的目录。

其它有意义的功能

 




↑返回目录
前一篇: 使用 CMP Beans 生成主键值
后一篇: NetBeans 和 JBoss 结合使用的入门指南