与 WebSphere Integration Developer 适配器连接,第 3 部分 : WebSphere Adapter for JDBC 简介

这是系列文章中的第三篇文章,介绍如何将资源适配器与 IBM® WebSphere® Integration Developer 一起使用。第一篇文章向您介绍了什么是资源适配器,以及它们如何适应面向服务的开发,第二篇文章介绍了如何使用 WebSphere Adapter for Flat Files,本文概述 JDBC™ Adapter,并演示如何将其与 IBM WebSphere Integration Developer 一起使用来实现简单的数据库同步场景。 本文来自于 IBM WebSphere Developer Technical Journal

David Van (davidvan@ca.ibm.com), 软件工程师, IBM

author photoDavid Van 目前供职于 IBM WebSphere Integration Developer 和 IBM WebSphere Message Broker Toolkit 可用性团队。



Richard Gregory, 软件开发人员, IBM Toronto Laboratory

Richard Gregory 是 IBM Toronto Lab 的 WebSphere Integration Developer 团队的一名软件开发人员。他的主要职责包括 WebSphere Integration Developer 测试工具的改进和交付。



Greg Adams, 杰出工程师, EMC

Greg Adams的照片Greg Adams 是优秀的 Eclipse 平台中用户界面首席架构师,最近又担任了核心 WebSphere Business Integration Tools (包括 WebSphere Studio Application Developer Integration Edition 和 WebSphere Integration Developer)的首席架构师和开发负责人。Greg 领导了 IBM 的第一个完整的面向服务的体系结构 (SOA) 工具组和第一个支持 Business Process Editor 的 BPEL4WS 标准的交付,这两个项目都是 IBM 的随需应变策略中非常关键的交付。



Randy Giffen, 顾问软件开发人员, EMC

Randy Giffen 的照片 Randy Giffen 是 IBM Ottawa Lab 的 WebSphere Integration Developer 团队的一名顾问软件开发人员。他负责 WebSphere Integration Developer 的业务状态机工具和可视化代码编辑器。在此之前,他曾是 WebSphere Studio Application Developer Integration Edition、Eclipse 和 VisualAge for Java 的用户界面团队的一名成员。



2007 年 7 月 14 日

引言

在本系列文章中的第一篇文章“与 WebSphere Integration Developer 适配器连接 – 介绍与适配器连接”中,您学习了有关将每种类型的适配器与 WebSphere Integration Developer 结合使用的基础知识(包括入站处理和出站处理之间的差异),以及资源适配器如何适应 WebSphere Integration Developer 应用程序。本文向您介绍 Java Database Connectivity (JDBC™) 资源适配器。我们先概述 JDBC 资源适配器,然后指导您完成构建同时使用 JDBC 适配器的入站和出站功能的应用程序所必需的步骤。

JDBC 提供了使用 Java 编程语言连接任何数据库的标准方法。如果没有 JDBC,您需要编写特定于每个具体数据库的自定义代码。为提供统一的编程数据库访问,数据库供应商为其数据库提供了 JDBC 驱动程序。这为 Java 开发人员带来了便利,但是作为 WebSphere 集成开发人员,不需要考虑 Java 数据库编程。您真正需要的是让数据库充当服务提供程序和/或使用者,并使用导入和导出将其集成到您的应用程序中。

JDBC 资源适配器利用 JDBC 提供的标准数据库访问,隐藏了这些详细信息,并允许您以与任何其他企业信息系统 (EIS) 相同的方式使用数据库。作为集成开发人员,您只需要处理导入或导出即可。正如在以前文章中了解到的,企业发现向导会指导您完成 JDBC 资源适配器必需的配置。

在开始学习 JDBC 适配器之前,让我们先快速了解一下其详情。


JDBC 适配器概述

WebSphere Adapter for JDBC 提供应用程序和数据库之间的双向连接。数据库示例有 IBM DB2®、IBM Informix®、Oracle 和 Microsoft™ SQLServer。JDBC 适配器可让您将应用程序与具有支持 JDBC 2.0 或更高版本的 JDBC 驱动程序的任何数据库集成。

图 1 说明了 JDBC 资源适配器、数据库组件和 WebSphere Process Server 组件的典型设置。

图 1. JDBC 适配器体系结构
JDBC 适配器体系结构

EISExport 和 EISImport 是使用 Enterprise Service Discovery 向导实现的。从以前的文章中知道,导出允许服务调用到模块,导入允许模块调用其他服务。该向导使用 JDBC 资源适配器确定哪些操作可用作数据库的一部分。这些操作都属于数据库中的每个表。该向导还创建承载每个表的行数据的业务对象。因此,如果 Customer 数据库中的表包含诸如 CustKey、FName 和 LName 的列,那么业务对象将包含属性 CustKey、FName 和 LName。该向导会发现属于入站服务(导出)和出站服务(导入)的操作。下面我们将介绍,对数据库的操作包括创建、更新和删除。通过这些端点,您还可以与不同的企业信息系统交换应用程序信息。图 2 显示了模块中定义的 EIS 导出和 EIS 导入组件。

图 2. WebSphere Integration Developer 中定义的 EIS 导出和 EIS 导入组件
EIS 导出和 EIS 导入组件

出站处理

从本系列文章的以前文章中您了解到,出站处理 指模块何时进行请求,以便使用导入将消息发送到 EIS,或从 EIS 检索消息。出站处理的示例有,当应用程序作为信用检查的一部分从数据库查找客户信息时,或者当应用程序收到需要在数据库中存储的新信息时进行的操作。

由于您的模块在使用导入,所以它可以像访问其他任何服务一样访问 EIS。JDBC 资源适配器处理从导入到 EIS 的请求,本示例中为数据库。

当您的模块需要在数据库中访问或存储信息时,在图 1 中,需要关注的主要部分是应用程序表。应用程序表 包含应用程序将使用或修改的企业信息。通常,使用该表的应用程序将操作、更新或同步其中包含的信息。因此,对于出站处理,在配置 JDBC 适配器时,可以指定需要从模块访问哪些表。

当从数据库发送或检索数据时,JDBC 适配器的出站处理支持以下两种业务对象样式:后像 (after-image) 和增量 (delta)。后像 业务对象是进行所有更改之后的完整业务对象。例如,在应用程序中处理业务对象时,可能要经历若干次更改。我们将要在数据库中存储的最终版本称为后像。使用后像业务对象样式的操作有创建、更新和删除。

另一方面,增量 是在 ApplyChanges 操作中使用的业务对象,它只包含键值以及给定键的更改值。增量的示例有,在应用程序更改客户地址时进行的操作。业务对象中存在的所有内容都是客户 ID(如果是键)和新的地址。有关业务对象样式的详细信息,请参阅参考资料部分中的 Technical overview of the Adapter for JDBC。

入站处理

入站处理 是指模块使用导出从 EIS 接收信息时进行的操作。当对 EIS 进行更新时,会发生这种情况。JDBC 资源适配器将 EIS 中更改的信息(本示例中为数据库的创建、更改或删除)转发到模块中的导出。该模块然后可以基于更改的信息执行它提供的服务。

您可能还记得上一篇文章中的内容,平面文件资源适配器通过轮询事件目录来确定何时添加新的文件,然后将内容转发到模块。使用 JDBC 资源适配器,获取对模块进行数据库更改的技巧是使用触发器。接下来让我们看看如何进行此工作。

数据库触发器 是驻留在数据库中的程序,当数据库中的表发生更新之类的事件时会运行该触发器。此触发器允许将数据库中的更改发送到 WebSphere Integration Developer 模块中的导出。图 3 显示了示例 IBM DB2 数据库触发器。

图 3. IBM DB2 数据库触发器示例
IBM DB2 数据库触发器示例

用形象的说法是,图 3 中的数据库触发器表明:“当 CUSTOMER 数据库表中创建新行时,将值插入事件存储表”。插入的值包括新行的主键和将要使用行数据填充的业务对象的名称。若要处理所有数据库表事件,则需要为与模块相关的每个表定义三个触发器,即 CREATE、UPDATE 和 DELETE。

事件表 存储数据库触发器在分段表中生成的异步事件。无需在与数据库触发器和应用程序数据库表相同的数据库中定义事件表;但是必须对其进行定义,并将其部署为符合 XA(两阶段提交)的数据库的一部分。在事件提交给导出之前,由表存储这些事件。在包含导出的模块使用事件时,事件表会删除该事件。有关事件表定义的详细信息,请参阅参考资料部分中 Technical overview of the Adapter for JDBC 的 Inbound processing 部分。

对于入站处理,当应用程序表中出现数据操作(创建、更新或删除)时,数据库触发器会捕捉更改,并在事件表中插入行。JDBC 资源适配器通过轮询事件数据库连续监视事件表,以检测事件表中何时有新行出现。当出现新行时,JDBC 资源适配器将行中的数据转换为业务图,并调用 WebSphere Integration Developer 模块中 EIS 导出上的接口操作。这与使用任何其他资源适配器执行的操作一样,您可以通过 Enterprise Service Discovery 向导创建业务图和接口。


数据库同步场景

让我们通过构建一个使用 JDBC 适配器的应用程序来实践一下刚才学到的概念。数据库同步场景是一个很好的示例,其中您可以放置要使用的 JDBC 适配器的入站和出站功能。通常情况下,在一个数据库表中修改数据要求与不同位置的其他类型的数据库保持数据同步。例如,某一公司可能具有镜像另一个数据库的数据库,并且两个数据库需要保持同步,或者已合并的两个公司可能需要同步在两个不同类型的数据库中保持的信息。

为模拟实际数据库同步场景,您需要创建要保持同步的两个数据库——ABCFIN 和 ABCINS。该表表示名为 ABC 的假想公司的财务和保险表。每个数据库将包含表 1 中的值:

表 1. 客户表
名称类型说明

Pkey

VARCHAR(10)

主键

Fname

VARCHAR(20)

客户的名字

Lname

VARCHAR(20)

客户的姓氏

Ccode

VARCHAR(10)

客户代码

您还可以使用接口映射组件开发数据同步逻辑,并使用企业发现向导创建 EIS 导出和 EIS 导入。您需要为 JDBC 适配器入站处理定义数据库触发器。图 4 概述了数据库同步场景。

图 4. 数据库同步场景
数据库同步场景

完成场景的开发后,您需要在服务器上运行应用程序,以同步两个数据库之间的数据。


构建场景

以下各部分将描述构建数据库同步场景的步骤:

  • 设置事件存储数据库
  • 设置应用程序数据库(实际上可能已存在)
  • 导入资源适配器
  • 使用 Enterprise Service Discovery 向导创建导入和导出
  • 实现业务逻辑

设置数据库

本文使用的是 DB2 version 9.0 数据库,不过,该概念适用于 IBM JDBC 适配器支持的任何其他数据库。

在开始构建应用程序之前,您需要设置应用程序要使用的数据库和表。在下载部分中,jdbcscripts.zip 文件包含用于 ABCFIN 数据库的数据库创建脚本。此数据库包括应用程序将要同步的客户表和 JDBC 资源适配器将轮询以创建入站事件的事件表。

  1. 请从本文结尾处的下载部分将数据库创建脚本下载到临时目录。
  2. 通过依次选择 Start - Program Files - IBM DB2 - Command Line Tools - Command Line Processor 启动 DB2 命令行处理器(在 Windows 上)。
  3. 在 DB2 CLP 窗口中的 db2 => 提示符下输入 quit。这将退出 DB2 命令行处理器模式,以便可以更改目录。
  4. 将目录更改到在第 1 步中下载了数据库脚本的临时目录。DB2 CLP 窗口应与图 5 类似。
  5. 通过输入以下命令执行两个数据库创建脚本:
    db2 –tf jdbc_source_script_db2.sqldb2 –tf
    jdbc_target_script_db2.sql

此示例和数据库创建脚本假定您配置了 db2admin 用户。

图 5 显示了第一个命令的执行情况。对于每个脚本,将提示您输入 db2admin 密码,脚本执行完成后,您将看到一条 SQL 命令已完成的消息。

图 5. 运行数据库创建脚本
运行数据库创建脚本

图 6 显示了运行数据库创建脚本后的事件存储表。通过选择 Start - Program Files - IBM DB2 - General Administration Tools - Control Center,然后选择 Control Center - All Databases - ABCFIN - Tables 您可以看到该表。

WebSphere Adapter for JDBC 用户指南(请参见参考资料部分)说明了事件存储表中的字段,现在让我们简单地了解一下如何使用此表。当其中一个数据库触发器运行时,将填充事件存储表。如果回过头来参考一下图 3,可以了解到触发器使用客户表的 pkey(主键)值设置了 object_key 值。JDBC 适配器使用 object_key 作为对客户表的索引,以检索更改的行。然后将该行中包含的数据作为业务图发送到模块中的导出。

图 6. 运行数据库创建脚本后的事件存储数据库内容
运行数据库创建脚本后的事件存储数据库内容

您已完成数据库的设置,并准备好从数据库发现服务。

导入 JDBC 资源适配器

在运行 Enterprise Service Discovery 向导之前,您需要将 JDBC 资源适配器导入到工作区。

  1. 在 Business Integration 视图中,单击右键,然后选择 Import
  2. 在打开的导入对话框中,选择 RAR file,然后单击 Next
  3. 单击 Connectorfile 旁的 Browse,然后浏览到 <WIDInstallDIR>/Resource Adapters/JDBC/deploy,如图 7 所示:
    图 7. 导入 JDBC 资源适配器
    导入 JDBC 资源适配器
  4. 选择文件 CWYBC_JDBC.rar,单击 Open,然后单击 Finish。如果打开一个对话框并询问您是否要切换到 J2EE 透视图,请单击 No,因为您要继续在 Business Integration 视图中工作。

除导入 JDBC 资源适配器外,您还需要从 DB2 安装将两个 jar 添加到工作区,然后将其放在资源适配器项目构建路径上。不同的数据库需要复制不同的 jar;有关详细信息,请参考参考资料部分中的适配器文档。

  1. 在文件系统中,在 <DB2_Install_Location>/SQLLIB/java 中找到 db2jcc.jardb2jcc_license_cisuz.jar
  2. 在 Windows 资源管理器中选中这两个文件,右键单击并选择 Copy
  3. 要显示连接器模块,请依次选择 Window - Show View - Physical Resources(在 Business Integration 视图中不显示连接器模块)。
  4. 在 Physical Resources 视图中,右键单击 CWYBC_JDBC - connector module,然后选择 Paste。CWYBC_JCBC 项目应如图 8 所示。
    图 8. 将数据库 jar 添加到工作区
    将数据库 jar 添加到工作区
  5. 右键单击 CWYBC_JDBC 文件夹,并选择 Properties
  6. 在属性页面的左侧,选择 Java Build Path,然后选择 Libraries 选项卡。
  7. 单击 AddJARs,然后在 CWYBC_JD 连接器模块下,选中两个 db2jcc jar,如图 9 所示,在 JAR Selection 对话框中单击 OK,然后在连接器项目属性对话框中单击 OK
    图 9. 将数据库 jar 添加到资源适配器项目构建路径
    将数据库 jar 添加到资源适配器项目构建路径

创建入站导出

导入并设置了 JDBC 资源适配器后,便准备好了使用 Enterprise Service Discovery 向导发现服务。在本部分中,您将创建一个导出,当修改数据库表时,适配器从该导出发送更新。您将使用与发现的服务对应的接口和业务对象创建导出。

在下面的第一组步骤中,将 Enterprise Service Discovery 向导配置为连接到数据库:

  1. 切换回 Business Integration 视图,右键单击并选择 File - New - Enterprise Service Discovery
  2. 如图 10 所示,在资源适配器列表中,您可以看到在前一部分中导入的 JDBC EMD Adapter (version 6.0.2.1) from the CWYBC_JDBC Connector Project。选中它,然后单击 Next
    图 10. 使用 JDBC 资源适配器发现服务
    图 10. 使用 JDBC 资源适配器发现服务

如果您使用的是 DB2 Version 8,则应使用以下字符串:jdbc:db2://<servername>:50000/ABCFIN,其中 servername 是运行 DB2 的计算机的 IP 地址(即使它是本地数据库)。有关按 JDBC 类型 4 模式运行的详细信息,请参见 DB2 文档。还应该将 XA DataSource Name 设置为 com.ibm.db2.jcc.DB2XADataSource,将 XA Database Name 设置为 ABCINS

  1. 在 Configure Settings for Discovery Agent 页面上的 UserCredentials 下,为数据库设置用户名和密码。向导可以使用这些值连接到数据库,以发现服务和数据。
  2. Machine Credentials 下,对于 Database URL,请输入 jdbc:db2:ABCFIN,如图 11 所示。前缀 jdbc:db2 指示连接指向 DB2 UDB 服务器,ABCFIN 表示 DB2 客户端上的 DB2 数据库目录项。
  3. 对于 Jdbc Driver Class,请键入 com.ibm.db2.jcc.DB2Driver(如图 11 所示)。这会加载发现向导连接到数据库所必需的 DB2 通用 JDBC 驱动程序。此值特定于每个 JDBC 供应商;对于其他数据库,请查阅适配器文档或咨询 JDBC 供应商。
    图 11. JDBC 资源适配器的连接配置
    JDBC 资源适配器的连接配置

在以下各步骤中,您可以使用 Enterprise Service Discovery 向导发现用于检索和更新数据库中数据的业务对象。这些业务对象将用作模块导入和导出操作的输入和输出。

  1. 单击 Next。这将带您进入向导的下一个页面,即 Find and Discover Enterprise Services。
  2. 单击 ExecuteQuery,然后展开 DB2ADMIN - Tables。这时您会看到 CUSTOMER 表,如图 12 所示。
    图 12. 查询数据库以发现业务对象。
    查询数据库以发现业务对象。
  3. 选择 CUSTOMER,然后单击 Add to import list。CUSTOMER 将被添加到 Objects to be imported 列表。
  4. 单击 Next

在接下来的页面上,您可以创建用于数据库导出的操作,然后创建模块以包含导出并配置适配器的属性。

  1. 在 Configure Objects 屏幕上,对于 Service Type,请确保选择 Inbound,如图 13 所示。对于其余的值,可以接受缺省值,这意味着 CreateUpdateDelete 操作将用于数据库服务。
    图 13. 选择入站操作
    选择入站操作
  2. 单击 Next。在 Generate Artifacts 页面上,单击 Module 旁的 New,如图 14 所示:
    图 14. 为 JDBC 适配器模块生成构件
    为 JDBC 适配器模块生成构件
  3. 在打开的 New Integration Dialog 中,选中 Create a module project,然后单击 Next
  4. 在 New Integration Project 向导中,请输入 ABCFIN 作为模块名称,然后单击 Finish。向导将关闭,您将退出 Enterprise Service Discovery 向导。在缺省情况下,导出名称(在 Name 旁边显示)为 JDBCInboundInterface
  5. J2C Authentication Data Entry 设置为 widNode/db2alias。当应用程序运行时,将使用此值确定是否授权用户连接数据库。稍后您将在服务器上配置使用此别名的用户 ID。
  6. 确保选中 Use discovered connection properties。如果要在服务器上配置(或已配置)资源适配器,则需要选择 Use connection properties specified on server
  7. 确保将 DatabaseVendor 设置为 DB2。接受其他字段的缺省值,然后单击 Finish

图 15 显示了使用 Enterprise Service Discovery 向导创建导出后的工作区内容。图 16 显示了 JDBCInboundInterface 接口。它包含 createDb2adminCustomerupdateDb2adminCustomerdeleteDb2adminCustomer 操作,当 CUSTOMER 数据库中的行上发生创建、更新或删除事件时,JDBC 资源适配器将调用这些操作。这些操作是单向的,因为它们仅用于通知数据库事件的应用程序。在本例的 Db2admin 中,用于访问数据库的帐户名称预先计划到每个业务对象。

图 15. 创建 JDBC 适配器导出后的工作区
创建 JDBC 适配器导出后的工作区

接口中的每个操作采用 Db2adminCustomerBG 业务图(如图 17 所示)作为输入。因此,在事件发生时,行中添加或更改的数据将包含在业务图的业务对象中。

图 16. JDBCInboundInterface 接口
JDBCInboundInterface 接口
图 17. Db2adminCustomerBG 业务图
Db2adminCustomerBG 业务图

创建出站导入

在本部分中,将创建允许模块访问 ABCINS 数据库的导入。您可以创建一个导入,使应用程序也能够访问 ABCFIN 数据库,但是在本场景中,我们仅关注的是通知 ABCFIN 更新和同步。

  1. 在 Business Integration 视图中,右键单击并选择 New - Enterprise Service Discovery
  2. 选择 JDBC EMD Adapter (version 6.0.2.1) from the CWYBC_JDBC Connector Project,然后单击 Next
  3. 在 Configure Settings for Discovery Agent 页面中,为数据库设置 usernamepassword,将 Database URL 设置为 jdbc:db2:ABCINS,将 Jdbc Driver Class 设置为 com.ibm.db2.jcc.DB2Driver。注意,此步骤与导出部分中的配置步骤相同,不过数据库名称是 ABCINS,而不是 ABCFIN。
  4. 单击 Next。单击 ExecuteQuery,然后选择 DB2ADMIN - Tables- CUSTOMER
  5. 单击 Add to import list。CUSTOMER 将被添加到 Objects to be imported 列表。
  6. 单击 Next,在 Configure Objects 页面中,对于 Service Type 选择 Outbound
  7. 单击 Next,并在 Generate Artifacts 页面中选择 ABCFIN 模块。这是您在入站步骤中创建的模块。
  8. J2C Authentication Data Entry 设置为 widNode/db2alias
  9. 确保选择 Use discovered connection properties,并将 DatabaseVendor 设置为 DB2。接受其他字段的缺省值,然后单击 Finish

图 18 显示了对出站服务完成 Enterprise Service Discovery 向导后,Business Integration 视图中的 ABCFIN 模块。注意,现在有 JDBCOutboundInterface 接口和 Db2adminCustomerContainer 业务对象。

图 18. 创建出站服务后的 ABCFIN 工作区
创建出站服务后的 ABCFIN 工作区

图 19 中显示的 JDBCOutboundInterface 包含双向操作,它允许您从数据库创建、更新、检索和删除行。该操作与入站操作使用相同的 Db2adminCustomerBG 业务图。图 20 显示的 Db2adminCustomerContainer 是一个业务对象,它包含一组 Db2adminCustomerBG 业务图。允许 JDBC 服务使用 retrieveAll 操作处理数据库的多个行。

图 19. Db2adminCustomerContainer 接口
Db2adminCustomerContainer 接口
图 20. Db2adminCustomerContainer 业务对象
Db2adminCustomerContainer 业务对象

您已经使用 Enterprise Service Discovery 向导完成了创建导入和导出。如果发生错误,或希望更改您设置的任何值,则可以在导入或导出的属性视图中修改 EIS 绑定值。不过,您无法更改接口。如果需要添加、删除或修改操作,则必须再次运行向导。

创建业务逻辑

在本部分中,您将创建业务逻辑,该业务逻辑使用您在先前部分中创建的 JDBC 资源适配器导出和导入。根据您的业务部门不同,在数据库更改经过导入时,并在通过导入将数据发送到数据库或从数据库获取数据之前,逻辑可能要执行许多操作。您甚至可能希望不同的模块分别使用导入和导出。在我们的示例中,通过将更新从 ABCINS 发送到 ABCFIN,仅让两个数据库与单个模块保持同步。因此,业务逻辑只包含接口映射,即将出站接口映射到入站接口。此业务逻辑意味着调用导出的任何服务都可以传递到导入。

要创建接口映射,请执行以下步骤:

  1. ABCFIN 下,右键单击 Mapping,并选择 New - Interface Map
  2. 在 New Interface Map 向导中,对于 Module,请选择 ABCFIN,然后对于 Name,请输入 DataSyncMediation,如图 21 所示:
    图 21. New Interface Map 向导
    New Interface Map 向导
  3. 单击 Next
  4. 对于 Source interface,请选择 JDBCInboundInteface,对于 Target interface,请选择 JDBCOutboundInterface,如图 22 所示。
    图 22. 选择源和目标接口
    选择源和目标接口
  5. 单击 Finish。Interface Map 编辑器将打开。
  6. 在 Interface Map 编辑器中,将 JDBCInboundInterface 的三个操作连接到 JDBCOutboundInterface 的前三个操作,如图 23 所示:
    图 23. 实现接口映射
    实现接口映射
  7. 对于在前一步骤中创建的每个连接,请单击该连接,然后将入站操作参数连接到出站操作输入。由于您仅按单向操作复制数据,所以不需要映射响应。
  8. 保存 Interface Map 编辑器内容。
  9. 通过双击 ABCFIN - Assembly Diagram 打开组装图。您会看到由 Enterprise Service Discovery 向导创建的导入和导出。
  10. 展开 ABCFIN - Mapping,然后将 DataSyncMediation 接口映射拖放到组装图。
  11. 在组装图上右键单击 DataSyncMediation,然后选择 Wire to existing。由于只有一个接口与 JDBCInboundInterface 导出匹配(为 DataSyncMediation 选择的接口),并且只有一个接口与 DataSyncMediation 引用匹配(JDBCOutboundInterface 导入),所以创建的连接如图 24 所示:
    图 24. ABCFIN 模块
    ABCFIN 模块

您已完成使用 JDBC 资源适配器实现导入和导出。在下一部分中,我们将运行应用程序。

在服务器上部署和运行

在运行 JDBC 资源适配器应用程序之前,您需要配置服务器,以便资源适配器可以对数据库进行身份验证。第一步是将我们前面提到的别名映射到数据库的用户 ID 和密码。

  1. 在 Servers 视图中,右键单击 WebSphere Process Server,并选择 Start
  2. 服务器启动后,右键单击服务器,并选择 Run administrative console
  3. 管理控制台的欢迎页打开后,单击 Log in,输入用户名和密码(如果已启用服务器安全)。
  4. 展开 Security,并单击 Global security,然后单击 J2C Authentication data,如图 25 所示:
    图 25. 创建新的身份验证别名
    创建新的身份验证别名
  5. 在 Global security 页面的左上角,单击 New
  6. 对于 Alias,请输入 db2alias,并且对于 User IDPassword,为 DB2 安装输入有效的用户 ID 和密码,如图 26 所示:
    图 26. 创建 DB2 身份验证别名
    创建 DB2 身份验证别名
  7. 单击 OK,单击 save 链接,然后单击 Save 按钮。

接下来,需要将模块添加到服务器。

  1. 在 Servers 视图中,右键单击服务器,并选择 Add and remove projects
  2. 在 Available projects 下,选择 ABCFINApp,然后单击 Add,如图 27 所示:
    图 27. 将模块添加到服务器
    将模块添加到服务器
  3. 单击 Finish

所有内容成功发布后,您会在控制台中看到消息 Polling has started。此消息意味着服务器正在侦听数据库中发生的事件。

现在,让我们看一下数据库同步应用程序如何工作。为此,您可以向 ABCFIN(我们希望保持 ABCINS与之同步的数据库)中的 CUSTOMER 表添加行。这会导致前面创建的触发器运行,并将事件放入事件数据库。

  1. 打开 DB2 控制中心,并在 All Databases - ABCFIN - Tables 下双击 CUSTOMER 表将其打开,如图 28 所示。
    图 28. 选择 CUSTOMER 表
    选择 CUSTOMER 表
  2. 单击 Add Row,并在新行中输入值,如图 29 所示。
    图 29. 向数据库表添加行
    向数据库表添加行
  3. 单击 Commit。当 JDBC 适配器轮询事件表并找到新项时,您将看到 deliverEvent 和 sendEvent 消息输出到控制台中。
  4. 现在,在 ABCINS 数据库中打开 CUSTOMER 表。您将看到图 30 所示的行。
图 30. 更新的 CUSTOMER 表
更新的 CUSTOMER 表

可以看到,ABCINS 数据库现在包含您在 ABCFIN 数据库的新行中输入的值。


结束语

在本文中,您学习了 JDBC 资源适配器的一些基础知识,以及该资源适配器如何支持入站和出站处理。您建立了两个示例数据库,然后又构建了一个应用程序,该应用程序使用资源适配器将一个数据库的任何更改复制到另一个数据库。


下载

描述名字大小
Database creation scripts 1 and 2jdbcscripts.zip2 KB
Completed applicationcompletedmodule.zip9 KB

参考资料

学习

获得产品和技术

讨论

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


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


忘记密码?
更改您的密码

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

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

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

选择您的昵称



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

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

标有星(*)号的字段是必填字段。

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

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

 


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


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=WebSphere, SOA and web services
ArticleID=240319
ArticleTitle= 与 WebSphere Integration Developer 适配器连接,第 3 部分 : WebSphere Adapter for JDBC 简介
publish-date=07142007