< 上一课 | 下一课 >

课程 2.2:将职员表绑定至 Web Service 数据源

“我的公司目录”应用程序显示目录中的所有当前职员记录列表。记录显示在具有可排序的列(包括姓、名、电子邮件和职员标识)的 JTable(employeesTable)中。要为该表获取记录,需要将 employeesTable 绑定至样本 Web Service 数据源返回的数据对象。

数据对象、数据源和绑定程序概述

为了获取本地数据对象以供 employeesTable 使用,将使用可视编辑器来将数据源添加至应用程序。该数据源连接至样本 Web Service 代理,并发现可用于应用程序的服务方法。然后,将选择该数据源中可用的 getLightEmployeeRecord 服务方法。最后,您会将应用程序中的 employeesTable 绑定至在行数据对象(lightEmployeeRecordRows)中返回的字段。

通过使用 Java 可视编辑器的内置绑定程序类,可以快捷地创建所有数据源和数据对象。可视编辑器提供了一组类属接口和类,它们在将可视组件绑定至数据工厂时生成到项目中。缺省情况下,绑定程序类生成到名为 jve.generated 的包中。可视编辑器将绑定程序类作为类属实现来提供,可以进一步定制并增强这些类以满足应用程序的需要。本教程演示了只对缺省绑定程序类进行基本和简单的操作时所表现出的强大功能和灵活性。

要点: 在开始本课之前,强烈建议先阅读下列帮助主题。这些主题可以帮助您更多地了解 Java 可视编辑器提供的数据对象、数据源和绑定程序所具有的功能和逻辑:
  • 数据绑定程序概述
  • 绑定程序 API 参考

对于本教程,您将在应用程序中使用 Web Service 数据源、几种类型的数据对象和几种类型的绑定程序。当您将这些对象的实例添加至应用程序时,可视编辑器会将必需的类添加到项目的 jve.generated 包中,在这里您可以扩展、替换或重写数据绑定逻辑。通过在设计视图的自由格式区域中显示应用程序正在使用的数据对象、数据源和绑定程序,Java 可视编辑器可以提供对绑定对象的可视支持。可视编辑器会在可视组件、数据对象和数据源之间绘制一些线,以显示任何选择的对象的当前绑定。

下图是可视组件、绑定程序、数据对象和数据源交互方式的简要概述。在本教程中构建的应用程序表明了对绑定程序的稍微复杂和更具创意的使用。此图没有准确地表示要构建的样本应用程序中的绑定程序、数据对象和数据源。

图 1. 下图说明了可视组件、绑定程序、数据对象与数据源之间的样本关系下图说明了可视组件、绑定程序、数据对象与数据源之间的关系

在图 1 中,每个可视组件都有它自己的绑定程序,该绑定程序将可视组件与数据对象相关联,如果可视组件为按钮,则将可视组件与数据源相关联。文本字段的绑定程序将字段绑定至数据对象的特定属性。此图中的行数据对象和数据对象的数据都来自对数据源中的服务的直接调用。文本字段的数据对象使用表中所选行的键值作为它用来调用 Service2 的自变量,Service2 会返回可能包括有关表中所选行的更多信息的完整记录。同样,此完整记录又用作按钮的操作绑定程序在调用 Service3 时的自变量,Service3 可能是更新在字段中输入的值的方法。有关数据对象、数据绑定程序和数据源的更详细说明,访问先前提供的链接。

使用提供的 WSDL 文件在项目中生成 Web Service Java 代理

为了使用在服务器上运行的 Web Service,Java 应用程序要求 Java 代理或客户机与它交互。通过使用 WSDL 文件,可以使用“Web Service 客户机”向导来将 Java 代理生成到 Java 项目中。MyDirectory 项目包括将用来生成此代理的 EmployeeDirectory.wsdl 文件。在生成 Java 代理之后,可以创建表示 Web Service 的数据源并开始对可视组件进行绑定。

要点: 本课中使用的 WSDL 文件假定您已将 Web Service 部署在 WebSphere Application Server 的本地安装中并且使用了本地主机的缺省端口(http://localhost:9080)。如果以不同方式部署了 EAR 文件,则在继续之前必须相应地编辑该 WSDL 文件。

要在项目中生成 Web Service Java 代理:

  1. 在主菜单上,单击文件 > 新建 > 其他并选择 Web Service > Web Service 客户机向导。如果没有显示 Web Service 类别,则选择显示全部向导
  2. 使用向导定义 Web Service 客户机:
    1. 对于服务定义,请输入 MyDirectory 项目中提供的 WSDL 文件:/MyDirectory/EmployeeDirectory.wsdl
    2. 客户机类型字段中,选择 Java 代理
    3. 将滑块条设置为部署客户机
    4. 确保服务器就是您要运行的服务器,并为此服务器正确设置了 Web Service 运行时。本教程已根据安装了 IBM WebSphere JAX-RPC 运行时的 WebSphere V6.0 和 WebSphere V6.1 进行测试。
    5. 确保 Java 代理客户机已输出至 MyDirectory 项目。

    “Web Service 客户机”向导

  3. 单击完成。“Web Service 客户机”向导将在项目的新包(directory.service)中生成 Java 代理。

将 employeesTable 绑定至 Web Service 所返回的行数据对象

因为 employeesTable 是在此应用程序中要绑定的第一个可视组件,所以需要创建一个数据源以指向刚才添加至项目的样本 Web Service 代理。当在后面的课程中绑定其他可视组件时,您将重用此数据源。在此步骤中,将添加 Web Service 数据源和 lightEmployeeRecordRows 数据对象。

要绑定职员表:
  1. 在 Java Bean 视图或设计视图中,选择 employeesTable。(确保没有选择它的 JScrollPane 父代。)标记为绑定的小选项卡显示在 employeesTable 的设计区域的顶部。

    图形画布上 JTable 中的“绑定”选项卡

  2. 单击 employeesTable 上的绑定选项卡。或者,可以右键单击 employeesTable 并选择绑定属性
  3. 因为应用程序中没有数据对象,所以需要添加新的数据对象。单击新建数据源数据对象
  4. 源类型字段中,选择 Web Service
  5. 因为尚未将 Web Service 数据源添加至应用程序,所以您现在需要添加它。在数据源字段的旁边,单击 ... 按钮以打开“添加 Web Service 数据源”对话框,该对话框会查找项目中可用的 Web Service 客户机或代理。
  6. 选择 EmployeeDirectory Web Service 并单击“完成”。新的数据源会添加至 DirectoryApp.java 文件。

    “添加 Web Service 数据源”对话框

  7. 在“新建数据源数据对象”对话框中,在“源服务”字段中选择 getLightEmployeeRecords() 并接受新数据对象的缺省名称:lightEmployeeRecordRows。此服务方法不需要参数。单击“确定”。新的数据对象将创建并显示在设计视图的自由格式区域上。

    “新建数据源数据对象”对话框

    提示: 因为您正在绑定表,所以“新建数据源数据对象”对话框只显示返回行数据对象的服务。在这种情况下,getLightEmployeeRecords() 方法是返回对象数组的唯一可用服务。
  8. 在“表数据绑定”对话框中,选择 lightEmployeeRecordRows 数据对象。
  9. 现在,需要选择想要显示在 employeesTable 上的 lightEmployeeRecordRows 数据对象的属性:

    “表数据绑定”对话框

    1. 单击双箭头 “双箭头”按钮 按钮以将所有对象属性添加至表列列表。
    2. 使用向上和向下箭头按照从上向下的顺序排列这些列:lastName、firstName、email 和 employeeID。
    3. 重命名列标题:电子邮件职员标识
      提示: 在完成表绑定之后,可以总是返回至绑定属性,并且可以随时重命名这些列和对它们重新排序。
    4. 单击确定
现在,通过使用 JRowTableBinder 已将 employeesTable 绑定至 lightEmployeeRecordRows 数据对象。如果在自由格式区域上单击 lightEmployeeRecordRows 数据对象,则可视编辑器会绘制一条从该数据对象至表的线。在这条线上,JRowTableBinder 用表绑定程序 表绑定程序图标 图标表示。将有另一条线指示数据对象使用 webServiceDataSource 作为它的数据源。

JTable 的绑定程序线视图

课程要点

注意对项目和应用程序所做的更改。在学习本课期间,您已添加 Web Service 数据源、行数据对象以及将 employeesTable 绑定至该行数据对象的绑定程序。

检查新包(jve.generated),它是在项目中创建的以存放 Java 可视编辑器生成的所有绑定程序类。还要注意新包(directory.service),它存放 Web Service 的 Java 代理。描述或总结在本课中学习的内容。

MyDirectory 项目中的包

现在,当您运行“我的公司目录”应用程序时,职员表会由 Web Service 使用现有职员记录来填充。

< 上一课 | 下一课 >