跳转到主要内容

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

当您初次登录到 developerWorks 时,将会为您创建一份概要信息。您在 developerWorks 概要信息中选择公开的信息将公开显示给其他人,但您可以随时修改这些信息的显示状态。您的姓名(除非选择隐藏)和昵称将和您在 developerWorks 发布的内容一同显示。

所有提交的信息确保安全。

  • 关闭 [x]

当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

所有提交的信息确保安全。

  • 关闭 [x]

使用实时数据集成来加强 SOA

Author photo of Deng Peng Zhou
Deng Peng Zhou 是 IBM 的一位软件工程师,他重点关注于数据集成和 Java 技术。

简介: 对于设计企业应用程序来说,面向服务的体系结构 (SOA) 是一种很受欢迎的方法,因为它提供了像可重用组件和独立于平台的通信等优点。当考虑 SOA 的时候,必须将数据集成作为一项基本要素。大量遗留数据来自于每天的日常事务,并且必须将其作为新应用程序的组成部分来进行维护。如果您能够将 SOA 和数据集成技术结合在一起,那么通过可重用性、与其他企业应用程序之间增加的通信,以及 Web 服务的使用,都将使您从中受益。本文说明了 IBM® WebSphere® DataStage 如何帮助我们实现这一点。DataStage 是一款 IBM 旗舰产品,它为实时数据集成 (RTI) 提供了一整套解决方案,可以将 RTI 作为 Web 服务来进行处理。您将使用 DataStage 开发示例 RTI 作业,将其作为 Web 服务进行发布,并使用 Java™ 客户端调用这个 Web 服务。

发布日期: 2007 年 10 月 16 日
级别: 高级
访问情况 : 3213 次浏览
评论: 


实时数据集成和 WebSphere DataStage 的简介

RTI 是 IBM WebSphere DataStage(以下简称为 DataStage)中的一个组件,它允许您创建可共享的标准服务,包括 Web 服务。您可以调用这些代表 DataStage 作业的数据集成功能的服务,而无需全面地了解数据集成逻辑。将 DataStage 作业作为可共享的服务进行部署,这将为您带来很多的优点,其中包括:

  • 提供对不同数据源(内部的和外部的)的单点标准访问。
  • 实时地重用来自 DataStage 作业的逻辑。
  • 通过为每个应用程序提供统一的服务,可以更快地部署应用程序,这将极大地减少冗余代码。

图 1 显示了 RTI 的体系结构。


图 1. RTI 的体系结构
RTI 的体系结构

本文说明了如何将 RTI 作业作为 Web 服务进行部署。让我们将这个过程分为下面几个部分进行介绍:

  • RTI 作业拓扑的简介
  • 使用 DataStage 一步一步地开发一个示例数据集成组件
  • 将数据集成组件作为 Web 服务进行发布
  • 开发一个 Java 客户端,以调用您所发布的 Web 服务

RTI 作业拓扑

RTI 服务器支持以下三种作业拓扑:

  • 拓扑一:批处理作业
  • 拓扑二:包含 RTI 输出组件的批处理作业
  • 拓扑三:完全与 RTI 兼容的作业

拓扑一:批处理作业

拓扑一使用新的或者现有的、作为 RTI 服务公开的批处理作业。(请注意,这种拓扑不包含任何 RTI 组件,如 RTI 输入组件或者 RTI 输出组件,在下面的部分中将对它们进行说明。)基于批处理作业的 RTI 服务可以接受作业参数作为输入参数。这种类型的服务不返回任何输出。当您配置部署时,可以为作业参数设置相应的值。图 2 显示了这种拓扑的一个示例。


图 2. 批处理作业
批处理作业

拓扑二:包含 RTI 输出组件的批处理作业

拓扑一和拓扑二之间唯一的区别在于,拓扑二包含 RTI 输出组件。RTI 输出组件 是作业的退出点,并且作为服务响应,它将为客户端应用程序返回一行或者多行内容。RTI 输出组件支持一个输入链。它的表定义可以映射为 RTI 服务的输出参数。请参见图 3 中关于这种拓扑结构的示例。


图 3. 包含 RTI 输出组件的批处理作业
包含 RTI 输出组件的批处理作业

拓扑三:完全与 RTI 兼容的作业

在拓扑三中,作业可以同时使用 RTI 输入组件和 RTI 输出组件。RTI 输入组件 是作业的入口点,在服务请求期间接受一行或者多行内容。RTI 输入组件支持一个输出链。它的表定义可以映射为 RTI 服务的输入参数,如 Web 服务操作的输入参数。符合拓扑三的作业始终是开启的。在您将这个作业作为 Web 服务进行了部署之后,您将发现该作业的一个实例正在 DataStage Director 中运行。图 4 显示了这种拓扑的一个示例。


图 4. 完全与 RTI 兼容的作业
完全与 RTI 兼容的作业

开发一个示例 RTI 作业

现在,让我们来创建一个示例 RTI 作业,以便从数据库表中提取位置信息。您使用的参数是 employeeid,将该参数组织为数组,这样您就可以同时传递多个参数。然后,该作业返回输入参数所指定的雇员的位置信息。这个 RTI 作业使用名为 RFIDLOCATION(请参见表 1 中该表的定义)的表,该表存储在一个名为 GBPMDB 的 IBM DB2® 数据库中。在表 2 和表 3 中分别显示了 RTI 输入组件和 RTI 输出组件的表定义。请注意,表 1 中包括了表 2 和 3 中所有的列。因此,当您使用 DataStage Designer 导入表定义的时候,您可以由表 1 中的表定义得到表 2 和 3 的表定义。


表 1. 表 RFIDLOCATION 的表定义
列名主键类型长度可否为空
RFIDRecordLocationIDInteger10不能为空
EmployeeIDVarchar60不能为空
LocationIDInteger10不能为空
RecordTimeTimestamp26不能为空


表 2. RTI 输入组件的表定义
列名主键类型长度可否为空
EmployeeIDVarchar60不能为空


表 3. RTI 输出组件 LocationInfo 的表定义
列名主键类型长度可否为空
EmployeeIDVarchar60不能为空
LocationIDInteger10不能为空
RecordTimeTimestamp26不能为空

使用 DataStage Designer 导入表定义

  1. 在 DataStage Designer 的存储库中,右键单击 Table Definitions,然后选择 Import > Plug-in Meta Data Definitions
  2. 在 Name 栏中选择 DSDB2,并单击 OK
  3. 在下一个窗口(请参见图 5)中,从下拉列表中选择服务器的名称(在这个示例中,选择 GBPMDB)。该服务器的名称即为您创建的数据库的名称,该数据库中包含您希望导入的表。
  4. 键入用户名 db2inst1 和密码 passw0rd,以连接到服务器。
  5. 选择 Tables 复选框,并单击 Next 以继续。

    图 5. 选择数据库
    选择数据库

  6. 现在,从 Select Table(s) 列表中选择 RFIDLOCATION 表,然后单击 Import,以导入 RFIDLOCATION 表的表定义。

您现在应该可以在 DataStage Designer 存储库中的 DSDB2 子类别中看到您刚刚导入的表定义,如图 6 所示。


图 6. 表定义
表定义

创建一个并行作业

  1. 现在,在 DataStage Designer 中创建一个新的并行作业(请参见图 10 中这个作业的布局)。这个作业中包含一个 DB2/API UDB 组件、一个 RTI 输入组件、一个 RTI 输出组件和一个连接组件,它们通过链接组件连接在一起。

    图 7. 作业布局
    作业布局

  2. 将新的作业保存为 sampleRTI。

配置该作业的属性

  1. 在 DataStage Designer 中单击 Job Properties 图标,以打开 Job Properties 窗口(请参见图 8)。
  2. 在 General 选项卡中,选择 Allow Multiple InstanceRTI Service Enabled
  3. 单击 OK,然后保存该配置。

    图 8. 作业属性的配置
    作业属性的配置

配置 DB2/UDB 组件

  1. 双击 DB2/UDB API 组件的 RFIDLOCATION,以打开如图 9 所示的窗口。

    图 9. 配置数据库连接信息
    配置数据库连接信息

  2. 在这个窗口中,指定服务器的名称(即您希望连接到的数据库的名称),在这个示例中,使用 GBPMDB
  3. 输入用户 ID db2inst1 和密码 passw0rd。保留其他的配置作为缺省配置。
  4. 单击位于该窗口顶部的 Output 选项卡。
  5. 在 Output 页面的 General 选项卡(请参见图 10)中的 Table names 字段中输入 RFIDLOCATION,并从 Query type 下拉列表中选择 Generated SQL query
  6. 保留剩余的缺省设置,并单击 Columns 选项卡。

    图 10. 配置表信息
    配置表信息

  7. 在 Columns 选项卡中,单击 Load 按钮,以加载表定义。这时将弹出一个窗口,显示您在存储库中选择的表定义。
  8. 在 DSDB2 子类别中选择 RTILOCATION,然后单击 OK
  9. 现在来选择列(如图 11 所示),然后单击 OK

    图 11. 选择列
    选择列

  10. 您将看到如图 12 所示的结果。单击 OK,并保存该作业。

    图 12. 导入结果
    导入结果

配置 RTI 输入组件 Employeeid

  1. 双击 RTI 输入组件 Employeeid,并在 Outout 页面中选择 Columns 选项卡。
  2. 将在这里加载表定义。(为 Employeeid RTI 输入组件加载表定义的步骤与在配置 DB2/UDB 组件部分中所描述的步骤是一样的。)
  3. 在加载了表定义之后,单击 OK,并保存该作业。

配置 RTI 输出组件 LocationInfo

  1. 双击 RTI 输入组件 LocationInfo,并转到 Input 页面中的 Columns 选项卡。
  2. 加载表定义。(为 Employeeid RTI 输入组件加载表定义的步骤与在配置 DB2/UDB 组件部分中所描述的步骤是一样的。)
  3. 在加载了表定义之后,单击 OK,并保存该作业。

配置连接组件 JoinByEmployeeid

  1. 双击 JoinByEmployeeid,以便对它进行设置。
  2. 转到 Stage 页面中的 Properties 选项卡,然后选择 EMPLOYEEID 将其作为连接键,并选择 Inner 作为连接类型,如图 13 所示。

    图 13. 配置连接组件
    配置连接组件

  3. 现在,转到 Output 选项卡。您可以看到,DataStage 已经在源和目标之间生成了一个映射关系。保留这些缺省设置,并单击 OK

编译该作业

单击 DataStage Designer 中的 Compile 图标。这时将打开 Compile Job 窗口,同时显示一条 Job successfully compiled 的消息,假定在整个过程期间没有出现任何错误的话。现在,该作业已做好了部署的准备。


将 RTI 作业 sampleRTI 作为 Web 服务进行部署

本文剩下的部分描述了如何使用 RTI 控制台将 RTI 作业作为 Web 服务进行部署。

  1. 在 Current Task 窗格中,打开 RTI 控制台,并单击 Register an RTI Server。这个操作将打开 RTI Server Wizard,如图 14 所示。
  2. 在 RTI Server Name 字段中,输入 RTI 服务器的计算机名称。端口号可能不同,这取决于您的 RTI 服务器运行时所处的应用服务器。例如,如果该应用服务器是 IBM WebSphere Application Server,那么端口号是 9080。
  3. 保留所有其他字段的缺省设置,并单击 Finish

    图 14. 设置 RTI 服务器
    设置 RTI 服务器

  4. 您刚注册的 RTI 服务器现在作为一个图标出现在右边的窗格中。双击该图标。
  5. 在 Current Tasks 窗格中,单击 Register a DataStage Machine 以打开 DataStage Machine Registration Wizard(请参见图 15)。
  6. 在 Machine name 字段中,输入运行 DataStage 服务器或者 DataStage TX 主机的计算机名称。
  7. 对于 DataStage 服务器计算机,在 User 和 Password 字段中输入您的有效凭证。RTI Agent 的缺省侦听端口是 2000。如果您的 DataStage 管理员更改了这个端口,那么请进行下面的操作:
    1. 选择 User-defined port 按钮。
    2. 输入新的端口号。
    3. 单击 Finish


    图 15. 设置 DataStage 计算机
    设置 DataStage 计算机

  8. 在 Current Tasks 窗格中,单击 Add a New Service to the RTI Server 以打开 RTI Service Wizard。
  9. 在 Service name 字段中,输入新服务的名称,然后单击 Finish
  10. 您刚创建的服务现在作为一个图标出现在右边的窗格中。双击这个 sampleRTI 图标。
  11. 在 Current Tasks 窗格中,单击 Add Support for Service Bindings 以便打开 Add Support for Service Bindings Wizard。
  12. 在右边的窗格列表中选择 Soap over HTTP,然后单击 Next
  13. 在 Additional binding-specific description 字段中,可以输入一个绑定的描述,将它添加到 Web 服务描述语言(WSDL)中。
  14. 从 Style 列表中,为 SOAP 消息选择一个编码类型。您的选择取决于客户端应用程序所能接受的类型。
  15. 单击 Finish。这个绑定图标出现在 Results 窗格中。
  16. 在 Current Tasks 窗格中,选择 Add an Operation 以打开 New Operation Wizard,如图 16 所示。您将看到注册的 DataStage Server 的列表和表示为节点的 DataStage TX 计算机。
  17. 选择作业 sampleRTI,即您刚创建的作业,然后单击 Next

    图 16. 选择 RTI 作业
    选择 RTI 作业

  18. 在 Operation Name 字段中,如果需要的话可以更改这个名称。其缺省值是作业或者映射的名称。
  19. 在 Queue Size 字段中,使用服务请求来指定操作队列的大小。如果队列大小超出了指定值,那么将拒绝请求。缺省值为三个请求。
  20. 在 Wait delay 字段中,指定最大的等待时间,以毫秒为单位。如果等待时间超出了指定的最大时间,则拒绝请求。缺省值是 100 毫秒。
  21. 单击 Next
  22. 下拉 Options 列表并选择 Array(请参见图 17)。对于那些接受或需要在单个请求中包含多行内容的任务,应该将它们的输入参数组织为数组。在这个示例中,您作为 Web 服务部署的作业可以在单个请求中接受多行内容,因此您必须从 Options 列表中选择 Array。

    图 17. 创建新的操作
    创建新的操作

  23. 这个 RTI 作业在单个请求中返回多行内容,因此在 Options 列表中再次选择 Array
  24. 单击 Next
  25. 您现在应该处于 New Operation Wizard - Messages Summary 窗口中,如图 18 所示。在 Service Request 和 Response Messages 字段中,检查该操作的输入和输出参数,然后单击 Finish

    图 18. 检查输入和输出参数
    检查输入和输出参数

现在,您可以设置运行时参数。

  1. 在 Minimum 字段中,输入可以在任何给定时间运行的并发作业实例的最小数目。
  2. 在 Maximum 字段中,输入可以在任何给定的时间运行的并发作业和映射实例的最大数目。其缺省值为 5,最大值的缺省值是 500。
  3. 保留其他字段的缺省设置,并单击 Next
  4. 在下一个窗口中,如果需要的话,替换缺省用户凭证,然后单击 Finish
  5. 当 Opertion Created 窗口弹出时,单击 OK
  6. 右键单击位于右边的窗格中的绑定图标,并选择 Activate,如图 19 所示。

    图 19. 激活该绑定
    激活该绑定

  7. 双击您创建的操作。在右边的窗格中,您将发现您刚附加到该操作的作业。
  8. 在 Global Tasks 列表中,单击 Browse the RTI Registry 以打开 RTI Registry Web 页面。您将在列表中发现您刚刚注册的 RTI 服务 sampleRTI(请参见图 20)。

    图 20. RTI 服务列表
    RTI 服务列表

  9. 单击 sampleRTI 显示它的注册信息。
  10. 要在 Web 浏览器中显示该服务的 WSDL,单击 WSDL 链接。通过这个 WSDL 文件,您可以调用所开发的这个 RTI 作业。

开发一个 Java 客户端,以便调用这个 Web 服务

这个部分说明了如何使用 Java 客户端调用您刚刚部署的 Web 服务,而您的主要任务是开发这个 Java 客户端。在开始之前,您需要准备好下面的环境:

  • Eclipse IDE 版本 3.0 或更高版本 — 您可以使用 Eclipse 开发该 Java 项目;准备一个 Eclipse IDE,这样您可以很容易地遵循本文中所介绍的步骤。
  • JDK 1.4 或者 1.5 — 这是开发 Java 项目的基本要求。
  • Apache Axis — 您使用 Axis 从 Web 服务生成本地 Java 存根,这使得可以很容易地调用 Web 服务。

现在,您可以开始开发您的 Java 客户端了。

  1. 创建一个 Java 项目,并将其命名为 TestRTIJob
  2. 右键单击该项目,并选择 Properties。打开一个如图 21 所示的窗口。
  3. 单击 Libraries 选项卡,如图 21 所示,添加 Axis .jar 文件。

    图 21. 添加 .jar 文件
    添加 .jar 文件

  4. 从 Eclipse IDE 中选择 Run > Run 以打开一个如图 22 所示的窗口。

    图 22. 生成 Java 存根
    生成 Java 存根

  5. 在这个窗口中的左侧创建一个新的 Java 应用程序实例,然后单击右边的 Search 按钮。
  6. 从打开的 Choose Main Type 窗口中,选择 WSDL2Java 类。Axis 提供了这个类,以便由 WSDL 文件生成本地 Java 存根。
  7. 单击 OK
  8. 复制您刚发布到 Program arguments 字段的 Web 服务的 WSDL 文件的 URL,如图 23 所示。

    图 23. 复制 WSDL 文件的 URL
    复制 WSDL 文件的 URL

  9. 单击 Run。当完成该程序时,您将注意到在您的项目中生成了一些存根类,如图 24 所示。这些类可以帮助您调用该 Web 服务。

    图 24. 生成的 Java 存根类
    生成的 Java 存根类

  10. 现在,您需要创建一个名为 TestRTIJob 的类,以便通过刚生成的存根类来调用 Web 服务。清单 1 中提供了这个类的源代码。

    清单 1. 调用 Web 服务
                            
    package com.ascential.rti.sample;
    
    import java.rmi.RemoteException;
    
    import javax.xml.rpc.ServiceException;
    
    public class TestRTIJob {
    
    	public static void main(String[] args){
    	    SampleLocator locator = new SampleLocator();
    	    SampleDOCLIT service = null;
    	    try {
    			service = locator.getsampleSoap();
    			String name = service.RTIJob("001");
    			System.out.println("The name is: " + name);
    		} catch (ServiceException e) {
    			e.printStackTrace();
    		} catch (RemoteException e) {
    			e.printStackTrace();
    		}
    	}
    }
    

  11. 运行这个类。Java 控制台打印出了用户的位置信息。

到这里为止,您完成了全部的工作!您已经完成了从开发一个 RTI 作业,到作为 Web 服务发布它,以便从 Java 客户端调用该服务的全部过程。


结束语

IBM WebSphere DataStage 提供一种便利的方法,用于将 DataStage 作业作为 Web 服务进行部署。在本文中,您了解了 RTI 以及其所有的特性,然后您开发了一个示例 RTI 作业,并将其发布为一个 Web 服务。最后,您使用 Java 客户端调用了这个 Web 服务。希望您能够更加熟悉 DataStage 以及它如何无缝地与 SOA 进行结合。


参考资料

学习

获得产品和技术

  • 使用 IBM 试用软件开发您的下一个项目,可下载或索取 DVD 光盘。

讨论

关于作者

Author photo of Deng Peng Zhou

Deng Peng Zhou 是 IBM 的一位软件工程师,他重点关注于数据集成和 Java 技术。

关于报告滥用的帮助

报告滥用

谢谢! 此内容已经标识给管理员注意。


关于报告滥用的帮助

报告滥用

报告滥用提交失败。 请稍后重试。


developerWorks:登录


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 使用条款

 


当您初次登录到 developerWorks 时,将会为您创建一份概要信息。您在 developerWorks 概要信息中选择公开的信息将公开显示给其他人,但您可以随时修改这些信息的显示状态。您的姓名(除非选择隐藏)和昵称将和您在 developerWorks 发布的内容一同显示。

请选择您的昵称:

当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

(长度在 3 至 31 个字符之间)


单击提交则表示您同意developerWorks 的条款和条件。 使用条款.

 


为本文评分

评论

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=SOA and web services, Information Management, WebSphere
ArticleID=261935
ArticleTitle=使用实时数据集成来加强 SOA
publish-date=10162007
author1-email=zhoudengpeng@yahoo.com.cn
author1-email-cc=

标签

Help
使用 搜索 文本框在 My developerWorks 中查找包含该标签的所有内容。

使用 滑动条 调节标签的数量。

热门标签 显示了特定专区最受欢迎的标签(例如 Java technology,Linux,WebSphere)。

我的标签 显示了特定专区您标记的标签(例如 Java technology,Linux,WebSphere)。

使用搜索文本框在 My developerWorks 中查找包含该标签的所有内容。热门标签 显示了特定专区最受欢迎的标签(例如 Java technology,Linux,WebSphere)。我的标签 显示了特定专区您标记的标签(例如 Java technology,Linux,WebSphere)。