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

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

NetBeans 5.0 端到端演示

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

概述

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

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

我们将要构建小型应用程序,从而确定出我们给予不同客户的折扣率。我们的应用程序将具有三个客户端接口:Web 接口、富客户端接口和适用于移动设备的 MIDlet 接口。我们从 J2EE 1.4 SDK 中它包含的 Derby 样例数据库开始。我们以 CUSTOMER 表为参照使用 NetBeans 向导创建 CMP 实体 beans。我们向实体 bean 创建会话 bean 门面,该实体 bean 用单一方法向特定客户提供折扣率,然后我们通过 web 服务操作来展示该方法。然后通过该 Web 服务来创建我们的这 3 个客户端接口。

演示准备

NetBeans 5.0 和 J2EE 1.4 参考实现

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

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

Mobility Pack

  • 下载并安装 NetBeans 5.0 Mobility Pack

演示

使用数据库浏览器

  1. Runtime 选项卡上,单击 Databases 条目旁边的加号符号展开该条目。
  2. 右键单击 Derby sample 数据库条目并选择 Connect 来连接到该数据库。



  3. 单击 sample 数据库条目旁边的加号符号展开该条目。
  4. 展开 Tables 条目。
  5. 右键单击 CUSTOMER 条目并选择 View Data。打开的窗口会显示表中的数据。
  6. 展开 CUSTOMER 条目。
  7. 注意观察 CUSTOMER_ID 列旁边的红色图标。这表示表的主键。


  8. 展开 Foreign keys 条目,然后展开它下面的两个条目。您将看到 CUSTOMER 取决于 DISCOUNT_CODE 表。

创建 EJB 模块和具有 Container Managed Persistence 的 EJB

  1. 创建新 Enterprise > EJB Module 项目,命名为 CustomerEJBModule
  2. 右键单击 CustomerEJBModule 项目并选择 New > CMP Entity Beans from Database...
    • 对于 JDBC Connection,选择 sample Derby 数据库。
    • 将包名称设置为 ejb,然后单击 Next
    • 选择 CUSTOMER 表并单击 Finish
  3. 请注意以下内容已由向导创建:
    • Enterprise Beans 下,两个 EJB,每个分别针对 Customer 表和 Discount 表。
    • Configuration Files 下的 EJB 部署描述符。
    • Server Resources 下的 JDBC 资源和连接池属性。
    • Source Packages 下每个 EJB 的生成实现类和接口。
  4. 构建 CustomerEJBModule 项目。

创建一个访问 CMP 的会话 Bean

  1. 右键单击 CustomerEJBModule 项目并选择 New > Session Bean...
  2. 在 Class Name 中键入 CustomerFacade 并将包名称指定为 ejb。将会话类型保持为 Stateless,同时创建 RemoteLocal 接口。然后单击 Finish
  3. 右键单击在编辑器窗口中打开的实现类,然后选择 EJB Methods > Add Business Method...
    1. 名称: getDiscount
    2. 返回类型: float
    3. 添加一个名为 name 的字符串参数类型。
  4. 再次右键单击 Source Editor 中的实现类,然后选择 Enterprise Resources > Call Enterprise Bean。选择 CustomerEB,然后单击 OK
  5. getDiscount() 方法中添加以下行。如果采取键入方式而不是复制粘贴,可以使用代码完成:
    public float getDiscount(String name) {
        float rate = 0;
        try {
            Iterator customers = lookupCustomerBean().findByName(name).iterator();
            CustomerLocal cust = (CustomerLocal) customers.next();
            rate = cust.getDiscountCode().getRate().floatValue();
        } catch (Exception e) {
            System.out.println("Ex: " + e);
        }
        return rate;
    }
  6. 按 Alt+Shift+F 为迭代程序添加 import 语句。或者,将鼠标放在错误的代码行上等待至出现电灯泡,然后按 Alt+Enter 添加 import 语句。


  7. 部署 CustomerEJBModule。

创建针对会话 Bean 的 Web 服务

  1. 创建新 Web 应用程序项目,CustomerWS
  2. 右键单击 CustomerWS 项目,然后选择 New > Web Service...。调用新 Web 服务 CustomerWebService,然后指定包 webservice。单击 Finish
  3. 右键单击编辑器中已打开的 CustomerWebServiceImpl,然后选择 Web Service > Add Operation
    1. 名称:getDiscountRate,类型: float
    2. 参数类型:String,名称:name
    3. 异常:Exception
  4. 右键单击并选择 Enterprise Resources > Call Enterprise Bean。选择 CustomerFacadeSB,将 Referenced Interface 设置为 Remote,然后单击 OK
  5. 将以下代码添加到 getDiscountRate() 方法中:
    float rate = 0;
    try {
    ejb.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. 有关 WSDL URL 的详细说明:http://localhost:8080/CustomerWS/CustomerWebService?WSDL
  4. 单击 Retrieve WSDL 按钮。
  5. 指定 wsclient 的包名称,然后单击 Finish 按钮。
  6. 右键单击 index.jsp(应已在编辑器中打开)的主体内部,然后选择 Web Service Client Resources > Call Web Service Operation。从对话框中选择 getDiscountRate 条目,然后单击 OK
  7. 选择 getDiscountRate(),然后单击 OK
  8. 除了生成查询方法,NetBeans 还简化了对方法的调用。




    用以下代码替换该代码:
  9. <H1>Discount Rate Web Service</H1>
    <H2>Enter company name:</H2>
    <form method="get">
    <input type="text" name="name" size="25">
    <br> <p>
    <input type="submit" value="Get Discount">
    </form> <%
    String name = request.getParameter("name");
    if ( name != null ) {
    try {
    float result = getCustomerWebServiceSEIPort().getDiscountRate(name); %>
    <p><%=name%> gets a : <b> <%=result%> %</b> discount. <%
    } catch(java.rmi.RemoteException ex) {
    out.println("<p>Caught an exception <p>" + ex);
    }
    out.close(); } %>
  10. 右键单击 CustomerWSClient 项目,然后选择 Run Project
  11. 浏览器将从 URL http://localhost:8080/CustomerWSClient/ 开始。然后将显示 JSP 页面。输入客户名称(即 MicroApple),然后单击 Get Discount 按钮。
  12. 在 NetBeans 中,单击 Files 选项卡。在每个项目下,有一个 dist 条目。展开这些 dist 条目查看创建的不同文件。
  13. 单击 Runtime 选项卡,然后展开 Servers 节点。
  14. 适当的应用程序已部署到 Sun Java System Application Server。展开 Applications 条目后,展开 EJB Applications 条目可显示 CustomerEJBModule 条目,展开 Web Applications 可显示 CustomerWSCustomerWSClient 应用程序。所有这些条目都还可以展开,这样您就可以查看它们的组件了。


  15. 有一个独立的 JDBC 模块。展开它会显示 JDBC 资源连接池。
  16. 另外,也可以在 index.jsp 中和 CustomerFacadeBean.java 的 getDiscount() 方法中设置中断点。然后右键单击 CustomerWSClient 并选择 Debug Project。当调试器遇到断点后,将显示 NetBeans 窗口。使用调试器来单步调试 JSP 和 EJB 代码。

查看 HTTP 监视器

  1. 在 NetBeans 中,HTTP Monitor 在左侧显示记录(如果您没看到 HTTP 监视器,请查看上述演示准备)。单击用户刚请求的记录。所选记录将出现在右侧。
  2. 右键单击记录,然后选择 Edit and Replay...


  3. 更改名称参数的值(即 MicroApple),然后单击 Send HTTP Request。浏览器将显示请求的结果。

查看部署描述符编辑器

  1. 在 Projects 窗口中,展开 CustomerEJBModule,然后展开 Enterprise Beans 条目,然后是 CustomerEB 条目。
  2. 双击 CMP Fields 条目查看 ejb-jar.xml 部署描述符。
  3. 当出现部署描述符编辑器的 General 视图。展开 CMP Finder Methods 部分,选择一种方法并单击 Edit 按钮查看 EJBQL。然后单击 Cancel 按钮。
  4. 单击顶部的 CMP Relationships 按钮显示 CMP Relationships 视图。双击其中一个查看其属性。然后单击 Cancel 按钮。
  5. 单击顶部的 XML 按钮查看新完成的 XML。

重构支持

  1. 在 Projects 窗口中,展开 CustomerEJBModule,然后展开 Enterprise Beans 条目、CustomerEB 条目和 Local Methods 条目(在上一部分查看部署描述符后,树中的大部分条目应已展开)。
  2. 右键单击 findByName 方法,然后选择 Refactor > Rename...。将名称更改为 findByCustomerName。在出现的预览窗口中,可以看到 NetBeans 处理了所有的 J2EE 重构问题:特别是缺少标准继承和更新部署描述符问题。


  3. 再次重构并部署 CustomerEJBModule
  4. 使用重构的方法名称再次运行 CustomerWSClient 来测试应用程序。

创建 MIDlet 以访问 J2EE 应用程序

  1. 创建名为 MobileCustomerApplication 的新应用程序项目。取消选中 Create Hello MIDlet 并单击 Finish
  2. 右键单击项目并选择新 File/Folder > MIDP > Mobile Client to Web Application
    Servlet 和客户端类型
    1. 确保 CustomerWSClient 是 Web 应用程序
    2. 包: wsclient
    3. 使用的移动客户端:Web 应用程序中的 Web 服务客户端:CustomerWebService.wsdl
    Web 服务操作
    1. 选择 CustomerWebServiceSEIPort > getDiscountRate
    客户端名称和位置
    1. 使用默认名称 WebToMobileClient。
    2. 包: mobile
    单击 Finish
  3. 重新部署 CustomerWSClient。因为无线连接向导在 WebModule 中创建了 servlet 和支持类,因此上述操作是必要的。
  4. 按 F6 启动 MIDlet。
  5. 运行 MIDlet 以获得贴现率。MIDlet 是可用的,但是非常普通。我们来解决这个问题。
  6. 双击编辑器中 WebToMobileCustomerClientMIDlet 选项卡以最大化视图。查看其内容。再次双击选项卡返回普通视图。
  7. 双击 mainMenu [List] 屏幕以打开 Screen Designer。将文本更改为 Run Rate App
  8. 使用 Edited Screen 组合框切换到 getDiscountRate_InputForm [Form]。将文本更改为 Enter Customer Name:
  9. 使用 Edited Screen 组合框切换到 getDiscountRate_OutputForm [Form]。将文本更改为 Discount Rate:
  10. 按 F6 启动 MIDlet,并注意您的更改。

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

  1. 创建新 General Java Application 项目 RichCustomerClient
  2. 右键单击 RichCustomerClient 项目,然后选择 New > Web Service Client
  3. 有关 WSDL URL 的详细说明:http://localhost:8080/CustomerWS/CustomerWebService?WSDL
  4. 单击 Retrieve WSDL 按钮。
  5. 选择现有的包名称 richcustomerclient,然后单击 Finish 按钮。
  6. 将以下方法签名添加到 Main.java(应已在编辑器中打开):
    static String getDiscount(String company) {

    }
  7. 右键单击 getDiscount 方法的主体内部,然后选择 Web Service Client Resources > Call Web Service Operation。从对话框中选择 getDiscountRate 条目,然后单击 OK。将生成以下代码:
    static String getDiscount(String company) {
    try {
    richcustomerclient.CustomerWebService customerWebService = new richcustomerclient.CustomerWebService_Impl();
    richcustomerclient.CustomerWebServiceSEI customerWebServiceSEIPort = customerWebService.getCustomerWebServiceSEIPort();
    customerWebServiceSEIPort.getDiscountRate(/* TODO enter operation arguments*/);
    } catch(javax.xml.rpc.ServiceException ex) {
    // TODO handle ServiceException
    } catch(java.rmi.RemoteException ex) {
    // TODO handle remote exception } catch(Exception ex) {
    // TODO handle custom exceptions here
    }
    }
  8. 对生成的代码进行以下更改:
    static String getDiscount(String company) {
    try {
    richcustomerclient.CustomerWebService customerWebService = new richcustomerclient.CustomerWebService_Impl();
    richcustomerclient.CustomerWebServiceSEI customerWebServiceSEIPort = customerWebService.getCustomerWebServiceSEIPort();
    return new Float(customerWebServiceSEIPort.getDiscountRate(company)).toString();
    } catch(javax.xml.rpc.ServiceException ex) {
    ex.printStackTrace();
    } catch(java.rmi.RemoteException ex) {
    ex.printStackTrace();
    } catch(Exception ex) {
    ex.printStackTrace();
    }
    return "Error";
    }
  9. 在现有的包 richcustomerclient 中,创建新 JFrame 窗体 RichCustomerJFrame
  10. 使用 GUI Builder 对窗体进行布局,其看起来大概如下(这不是有关使用 GUI builder 的教程)。有关更多信息,请参见此教程):


  11. 命名组件使其符合以下所示。注意放在窗口底部的 jLabelResult(但在显示结果之前没有文本)。


  12. 右键单击 Get Discount 按钮并选择 Events > Action > actionPerformed,然后添加以下代码:
        String company = jTextFieldCompanyName.getText();
    String discount = company + " gets a " + Main.getDiscount(company) + "% discount.";
    jLabelResult.setText(discount);
  13. 切换到 Main.java,然后将以下代码添加到主方法中:
        RichCustomerJFrame app = new RichCustomerJFrame();
    app.setVisible(true);
  14. 按 F6 运行富客户端应用程序。

清除

  1. 单击 Runtime 选项卡。
  2. Web Services 下,删除 CustomerWebService 条目。
  3. 在 SJS AS 的 Enterprise Applications 下,取消部署 /CustomerWS/CustomerWSClientCustomerEJBModule
  4. 删除五个项目。

其他的资源管理器功能

 




↑返回目录
前一篇: NetBeans Mobility Pack 5.0 快速入门指南
后一篇: 将现有的 Java ME MIDP 源代码导入 NetBeans IDE 5.0 中