级别: 初级 C.M.Saracco, 高级软件工程师, IBM Jacques Labrie, 高级软件工程师, IBM Stephen Brodsky, 高级技术工作人员, IBM
2004 年 9 月 01 日 将 Enterprise Information Integration (EII) 技术与 Service Data Objects (SDO) 合并可以帮助面向对象的编程人员方便地使用多种不同种类的数据源,减少集成异类数据的复杂性。在本文中,我们将说明合并的原因,描述样例体系结构,并提供基于 IBM® WebSphere® Studio 中早期 SDO 支持和 DB2® Information Integrator 中 EII 支持的编码示例。
因为 IBM 和 BEA Systems 去年共同合作开发了新的 Java™ 数据访问规范,许多 IT 架构师和软件工程师都想知道,这个称为 Service Data Objects 或 SDO 的新模型是如何与在过去两年内变得日益流行的 Enterprise Information Integration (EII) 技术在一起使用的。SDO 和 EII 都向编程人员提供了各种异类数据的单一接口,允许编程人员通过单一数据结构对数据进行操作。您将了解如何在促进灵活业务环境的面向服务体系结构 (SOA) 应用程序中一起使用这两种技术。
SDO 和 EII 技术形成互补的解决方案,因为它们在关键方面互不相同。例如,SDO 是支持断开连接的应用程序编程体系结构的编程模型,它使用数据图表示持久存储数据,并使用基于对象的 API。与 SDO 形成对照,EII 是提供实时数据访问的数据集成服务器,通常用表来表示不同种类的数据,而且它使用基于 SQL 的 API。
同时使用 EII 和 SDO 可以增加 SDO 体系结构的能力并提高生产率,这些您会在本文中了解到。EII 可以帮助 SDO 前端 Java 组件快速构建和部署虚拟数据访问服务层。
在本文中,我们将基于 IBM 的商业实现讨论 SDO 和 EII 技术之间的协同作用。我们提供了使用 SDO 早期版本的示例,该版本包含在 WebSphere Studio Application Developer, Version 5.1.2 中,而 Version 5.1.2 附带了受 DB2 Information Integrator, Version 8.1 支持的 EII 技术。对于那些不熟悉 SDO 或 EII 的人,我们首先对这些技术进行简要介绍,并说明它们各自的潜在优点。然后介绍的是集成的体系结构,并提供了示例代码。最后,我们提供了使用 SDO 和 EII 成功设计、开发和部署试验项目的一些技巧。
技术概述
Service Data Objects
SDO 是用于各种格式数据的统一访问的基于对象的编程规范。设计它是为了补充现有 Java 2 Enterprise Edition (J2EE™) 数据访问机制,其中包括 Enterprise JavaBeans (EJBs)、Java Database Connectivity (JDBC™) 和大量用于持久性的流行架构。它还支持面向服务的体系结构 (SOA), 其中包括 Web 服务。定义 SDO 的部分动机是,使编程工具的编程人员和开发人员在他们各自选择的开发架构中工作时能够使用一致的、基于对象的数据访问 API。
SDO 的显著特点是断开连接的编程模型,这是许多基于 Web 的应用程序的共同要求。SDO 很好地符合这些应用程序的要求,使它们可以受益于连接到数据库(或其他持久存储数据源)、检索适当数据、断开数据源连接,以及脱机处理和操作数据。在应用程序重建数据库连接之后,即可对数据的在内存中的副本进行任何更新,乐观型并发控制技术(optimistic concurrency control technique)可以检测和防止发生冲突的更新。SDO 为编程人员提供了以面向对象的方式建模和操作各种持久存储数据的方法,从而不必知道每个必需的数据源的本地 API。
如图 1 中所示,SDO 编程人员使用了由一个或多个
数据对象组成的
数据图(树状结构数据的集合)。数据图结构非常符合特定类型 Web 应用程序的要求,比如那些显示主-从信息,而且很容易被大多数面向对象的应用程序编程人员理解的应用程序。图 1 显示了应用程序客户机或组件如何处理由一个或多个数据中介服务(如这里显示的 JDBC 中介)返回的断开连接的数据图。
在运行时,
数据中介服务 负责与适当的数据源进行交互,使用检索的数据构造数据图,并将对存储器内图(in-memory graph)的任何更改应用回数据源。我们将集中讲述一种特定类型的数据中介服务 —— JDBC 中介,用它来说明如何从 EII 服务器检索数据,然后通过由此生成的数据图来脱机操作数据。
图 1. SDO 编程模型
企业信息集成
EII 为编程人员提供了可以用不同格式维护的、通过不同的应用程序编程接口(API)检索的、由不同的远程服务器管理的异类数据的单点映像。同样,它使编程人员可以在比不使用该技术更高的抽象化级别上进行工作,编程人员会感觉不同种类的远程数据就像是位于本地可访问的数据库中。
对于 EII,Java 编程人员通常编写 JDBC 应用程序或使用 EJB 的应用程序连接到 EII 服务器,对大量的数据进行操作。EII 为非基于 Java 的应用程序提供了类似服务,这些应用程序包括那些由 4GL 工具生成的应用程序,以及那些用过程和面向对象的编程语言编写的应用程序。图 2 说明了示例 EII 体系结构。客户机应用程序或组件使用 JDBC 或 SQLJ 访问 EII 服务器管理的异类数据,该服务器透明地集成不同种类的数据,并以表结构返回这些数据。
图 2. 示例 EII 体系结构
绝大多数 EII 产品都共享下列特征:
-
支持各种数据源,其中包括关系数据库管理系统 (DBMS)、非关系 DBMS、文件、XML 文档和其他数据源。
-
基于 SQL 的 API。
-
在一个查询中连接、联合、聚集来自多个数据源的数据并使它们相关的能力。
-
基于多个数据源集成的数据创建单独视图或虚拟数据对象的能力。
-
位置透明。
-
自动数据类型转换服务。
-
实时编程模型。
从字面上理解,EII 技术有时被称为“联邦数据服务”或“联邦数据库技术”。
商业实现
许多供应商都发布或发出了对 SDO、EII 或两者的支持,IBM 就是其中之一。本文使用 IBM 的 SDO 和 EII 商业实现来说明如何将这两项技术部署在一起。
WebSphere Studio Application Developer
SDO 的早期版本包含在 WebSphere Studio Application Developer 5.1.2 和 WebSphere Application Server 5.1 中。(该 SDO 早期版本通常称为 "Web Data Objects" 或 "WDO"。)SDO 的早期版本由各种类库组成,其中包括 JDBC 数据中介服务(设计用来支持使用 SDO 生成动态 JavaServer Pages (JSP) 的向导)的那些类库。
正如前面提到的,我们将主要集中讲述与 WebSphere Studio 一起提供的 JDBC 数据中介服务。像所有数据中介服务一样,JDBC 中介希望编程人员标识他们想检索的数据。此外,编程人员必须提供到目标 JDBC 数据库的有效连接,这样中介才可以构造和执行适当的查询。
编程人员需要创建并填充一个元数据对象来标识他们想检索的表(或视图)。表间关系、主键列和其他有关目标数据的信息也是通过元数据对象指定的。JDBC 数据中介服务生成适当的 SQL 语句(SELECT、INSERT、UPDATE 和 DELETE)来访问目标数据源。
JDBC 数据中介服务支持对许多启用了 JDBC 的数据源的访问,并且已经用 DB2 UDB、Oracle、Cloudscape 和 Microsoft SQL Server 进行了测试。注意,对每个数据库的访问都是通过编程人员必须建立的单独数据库连接来执行的。DB2 Information Integrator 可以在以下方面扩展和增强 JDBC 数据中介的内置能力:通过使用到 DB2 Information Integrator 的单一连接,中介可以透明地返回从多个数据源集成的数据,这些数据源包括其他关系数据库、非关系数据库和文件。
DB2 Information Integrator
DB2 Information Integrator 提供企业信息集成服务。它拥有前面概括的基本 EII 技术的所有特征和许多高级功能,其中包括:
-
全局的、基于成本的查询最佳化服务。
这使编程人员可以将确定高效数据访问策略的任务委托给 DB2 Information Integrator 服务器。这样做可以缩短设计、编码和测试周期,并简化维护问题。它还可以将编程人员不这样做而必须承担的应用程序性能调整工作量减到最少。
-
对大量持久存储数据源和动态生成数据的数据源(如搜索引擎和 Web 服务)的访问。
-
与消息队列软件集成。
这对于在基于工作流程的环境中尝试数据驱动事件和其他业务处理非常有用。
-
功能补偿和透明性。
DB2 Information Integrator 可以模拟无法通过给定远程数据源获得本地支持的功能,为编程人员提供使用其他方式无法获得的额外能力。另外,DB2 Information Integrator 使用户可以通过使用模板透明地使用特定于数据源的功能。
DB2 Information Integrator 提供了对各种关系 DBMS、非关系 DBMS、电子表格、消息队列、XML 文档、Web 内容、Web 服务、电子邮件消息和文件系统的现成访问。可以添加(或单独使用)DB2 Information Integrator 系列的另一成员,z/OS® 的 DB2 Information Integrator Classic Federation,来提供对大型机数据源(VSAM、IMS、CA-IDMS、CA-Datacom 和 Adabas)的类似访问。合作伙伴产品还为 DB2 Information Integrator 提供了对其他数据源的访问。最后,DB2 Information Integrator 的新 beta 版本提供了对 SAP、PeopleSoft 和 Siebel 的现成应用程序的访问。DB2 Information Integrator 支持对所有受支持数据源的读写权限,以及对相关数据源的写入权限。
除了这些 EII 服务,DB2 Information Integrator 还支持远程数据的本地缓存(通常是因为性能原因)、两个或多个数据源之间数据的复制和用户数据的本地持久存储。
要了解 DB2 Information Integrator 是如何工作的,请查询这些关键术语和概念。如图 3 中所示,可以将 DB2 Information Integrator 用作 SDO(和其他)应用程序的联邦数据库服务器。管理员为他们要访问的每种类型的数据定义了一个
包装器。安装 DB2 Information Integrator 需要访问三个 Oracle DBMS 实例和一个 Teradata 实例,该安装将定义两个包装器:一个用于 Oracle,一个用于 Teradata。一台或多台
服务器与每个包装器都是有关联的;它们指定了存放所需数据的服务器实例(如 TCP/IP 名称)。在大多数生产环境中,管理员还定义了
用户映射,将 DB2 Information Integrator 用户 ID 和口令转换成远程数据源中的有效帐户。管理员在每个服务器中标识多个相关数据集合(如表、视图、文件);对于 DB2 Information Integrator,这些都称为
昵称。
图 3. DB2 Information Integrator 联邦数据库体系结构
节约开发成本、快速推向市场和增强分析能力是许多公司使用 DB2 Information Integrator 的原因。实际上,
研究已经显示,对异类数据进行综合访问的 Java 开发项目如果使用 DB2 Information Integrator 可以减少 40% 到 65% 的编码需要,开发周期缩短得更多。另外,使用实时数据增加现有数据仓库或提供异类数据集市的合并映像的能力使公司可以改善他们的业务分析活动。
在 SDO 环境中使用 EII
现在您已经熟悉了 SDO、EII 以及 IBM 对它们的商业实现,让我们来研究架于这些技术之上的集成体系结构。
体系结构
这里描述的 SDO 和 EII 组合体系结构遵守面向服务的体系结构(SOA)原则,在面向服务的体系结构中,业务处理是作为能够与通过已发布接口进行通信的不同服务来实现的。SOA 是为高效的软件组件技术提供的,软件组件技术有助于促进代码的重用,并提供了更灵活的 IT 基础设施。通过让编程人员将精力集中于支持他们的服务所必需的业务逻辑,并将数据访问任务委托给 SDO 和 EII 层,SDO 和 EII 的组合在逐渐适应该体系结构。
IBM 的 JDBC 数据中介服务提供了 SDO 与 IBM 的 EII 产品 DB2 Information Integrator 之间的关键链接。如图 4 中所示,该中介使用 DB2 Information Integrator 为 SDO 应用程序构建了一个虚拟数据访问服务层。中介客户机通过向 DB2 Information Integrator 服务器发出查询来建立与 DB2 Information Integrator 数据库的连接,并透明地访问异类数据。在这种方法中,中介感觉大量远程数据(关系数据和非关系数据)就像在一个 DB2 数据库中。通过如此操作,中介可以轻松地构造实际上基于多个数据源中的聚集或合并数据的数据图。
图 4. IBM 的 JDBC 数据中介服务和 DB2 Information Integrator 为 SDO 应用程序提供了虚拟数据访问服务
SDO 和 EII 体系结构使您能够:
-
使用 SDO 应用程序可以立即到达大量的数据源,其中包括大型机数据源、特定行业的数据源、由普遍使用的第三方应用程序包(如 SAP、PeopleSoft 和 Siebel)管理的数据。
-
通过使用较少的数据中介服务和较少的数据源连接减少设计、开发和维护的复杂性。
- 缩短开发周期,促进快速发行计划。
-
将数据访问任务的性能调优降到最低。DB2 Information Integrator 自动分析各种可能的数据访问策略的成本,并选择一个高效策略来执行。
- 自动调整执行策略,以便在基础数据库模式中应用更改,比如添加新的索引。
-
不需要调用应用程序来手工聚集、汇总或转换数据(DB2 Information Integrator 会处理上述所有操作)。
-
减少网络流量和资源消耗。可以通过 DB2 Information Integrator 服务器和后端数据源来执行大量的数据集成和筛选工作,不用在 SDO 应用程序内执行。
-
使用虚拟数据访问服务层支持 SOA、促进代码重用、提高编程效率和促成更灵活的软件环境。
虽然本文集中讲述了 JDBC 数据中介服务和 DB2 Information Integrator 的使用,但值得注意的是,DB2 Information Integrator 能够潜在地与其他类型的数据中介服务进行组合,如 EJB 中介,它连接到映射到 DB2 II 昵称的实体 EJB。不过本文并没有详细研究 DB2 Information Integrator 如何可以与不同的数据中介服务进行组合。
编写自己的代码
当前,对自己的组件进行编码会使 SDO 和 DB2 Information Integrator 的集成发挥最大的作用。为了做到这一点,您的组件将使用少量的 SDO 和 JDBC 数据中介服务对象,后者将使用 DB2 Information Integrator 集成来自多个数据源的数据,并将数据图展现给调用组件。在这一节中,我们将讲述一个简单的示例。不过,请记住,现在的实现是处于早期版本级别上,这里描述的 API 的某些方面的内容可能已经发生了变化。
设置联邦数据库环境
DB2 Information Integrator 与 WebSphere Studio、WebSphere Application Server 或 SDO 一起使用时不需要进行特殊配置。您可以采用安装和配置 DB2 Information Integrator 的标准过程,如果愿意,可以使用可用向导引导您进行安装和配置。有关的详细信息,请参阅
在线产品手册或 InfoCenter、
IBM Redbooks或其中一篇
在线教程。
设置开发环境
为了准备 WebSphere Studio 开发环境,需要创建一个项目进行工作。(我们创建了示例 Java 项目。)调整项目的属性,这样 Java Build Path 就可以包含所有必需的 JAR 和 ZIP 文件。对于 DB2 Information Integrator 访问,则必须包含 db2java.zip 文件,该文件位于 DB2 Information Integrator 安装根目录下的“\java”子目录中。对于 SDO 和 JDBC 数据中介服务,则需要另外的 .jar 文件。图 5 列出了用于项目的所有库。注意,WebSphere Studio 环境中包含的 SDO 早期版本被称为“WDO”或 Web Data Objects,这在前面提到过。
图 5. 用于示例 SDO 应用程序的外部库
计划组件设计
接着,可以计划组件设计和开始编写代码。需要实现的基本逻辑相当简单:
-
初始化应用程序环境。这包括下列几个简单步骤:
-
使用标准 JDBC 编程技术建立与 DB2 Information Integrator 数据库的连接。
-
创建 ConnectionWrapper 对象。
-
创建并填充一个元数据对象,以此表示将使用的 DB2 Information Integrator 昵称、表或视图的结构。
-
创建与前面创建的元数据和数据库连接对象相关联的 Mediator 实例。
-
获取数据图并用 DB2 Information Integrator 中的所需数据填充它。
-
断开数据库连接。
-
按照所希望的那样处理图。
步骤 1:初始化应用程序环境
许多编程任务都需要一些初始化或开始活动,此示例 SDO 应用程序也不例外。在从 DB2 Information Integrator 中检索数据之前,需要建立与目标 DB2 Information Integrator 数据库的连接,为该连接创建 ConnectionWrapper 对象,构建适当的元数据对象和创建 JDBC 中介实例。后面部分将向您显示如何进行这些操作。
步骤 1a:建立数据库连接
编写 SDO 组件以连接到 DB2 Information Integrator 数据库,就像编写普通 JDBC 应用程序来连接到 DB2 UDB V8.1 数据库一样。下面是进行此操作的代码:
清单 1. 连接到 DB2 Information Integrator 数据库
import com.ibm.websphere.wdo.mediator.*;
import java.sql.*;
. . .
public class SDOSampleParts {
. . .
String dbUrl = "jdbc:db2:demo";
String user = "myID";
String pwd = "myPwd";
String db2Driver = "COM.ibm.db2.jdbc.app.DB2Driver";
// connect to the DB2 II database
. . .
Class.forName(db2Driver).newInstance();
Connection connection = DriverManager.getConnection(dbUrl, user, pwd);
. . .
}
|
步骤 1b:创建 ConnectionWrapper
接着,为此数据库连接创建 ConnectionWrapper。JDBC 数据中介服务需要一个连接包装器。
清单 2. 包装 JDBC 中介服务连接
. . .
ConnectionWrapperFactory factory =
ConnectionWrapperFactoryImpl.soleInstance();
ConnectionWrapper connectionWrapper =
factory.createConnectionWrapper(connection);
. . .
|
步骤 1c:创建元数据
下一步包括创建元数据对象和设置适当的属性来匹配要使用的 DB2 Information Integrator 表、昵称或视图中的列。在将来的版本中,可以通过 XML 文件指定或通过向导生成该元数据对象,从而最小化或消除手工创建元数据的需要。不过,当直接使用 SDO 的早期版本及其 JDBC 数据中介服务时(如此处所做的),需要您自己定义和填充此对象。
该编码示例为 DB2 Information Integrator 中创建的“SAMPLE_PARTS”视图定义了元数据。为了便于您参考,下面是视图定义(SQL 形式):
清单 3. 使用 SQL 创建跨两个异构数据库的 DB2 Information Integrator 视图
CREATE view SAMPLE_PARTS as
SELECT p_partkey, p_mfgr, p_type, p_size
FROM inf_part
WHERE p_partkey < 10
UNION
SELECT p_partkey, p_mfgr, p_type, p_size
FROM ora_part
WHERE p_partkey BETWEEN 10 AND 20
|
注意,该视图是以两个昵称的联合为基础的。在此环境中,昵称映射到 Informix® 表和 Oracle 表。不过,可以很容易地将它们映射到其他数据源,其中包括非关系数据源。
提供了视图定义后,可以创建由 4 个列组成的元数据对象,并指定一个列为主键以进行以后的工作。(当然,从来不直接对商业关系数据库环境中视图定义主键。不过,在任何表或视图中,至少有一列要作为“主键”标识给 JDBC 数据中介服务。)
清单 4. 为 JDBC 数据中介服务定义视图的元数据
. . .
MetadataFactory metadataFactory = MetadataFactory.eINSTANCE;
Metadata metadata = metadataFactory.createMetadata();
Table partsView = metadata.addTable("SAMPLE_PARTS");
partsView.beRoot();
Column key = partsView.addIntegerColumn("P_PARTKEY");
key.setNullable(false);
partsView.addStringColumn("P_MFGR");
partsView.addStringColumn("P_TYPE");
partsView.addIntegerColumn("P_SIZE");
partsView.setPrimaryKey(key);
. . .
|
虽然前面的例子中没有显示,但您可能定义了“筛选参数”(类似于示例 SQL 查询谓词)来限制为此图返回的行。例如,可以定义筛选参数来指定最终的数据图中只能包含特定大小的某些部分。
步骤 1d:创建 JDBC 中介实例
需要一个 JDBC 中介对象,以便使您从启用 JDBC 的数据源(DB2 Information Integrator 服务器)中检索所需的数据。创建此中介很简单;只需要传入前面定义的元数据对象和活动的数据库连接(由 ConnectionWrapper 对象包含)。
下面是示例代码:
清单 5. 构建中介对象以供后面使用
. . .
MediatorFactory mFactory = MediatorFactoryImpl.soleInstance();
Mediator mediator = mFactory.createMediator(metadata, connectionWrapper);
. . .
|
步骤 2:获得 DataObject
有效的中介对象使您能够检索与一行代码相关的 DataObject。基于前面的示例,下面的行将利用 DB2 Information Integrator 检索 SAMPLE_PARTS 视图中跨 Oracle 和 Informix 数据源的数据:
清单 6. 检索相关数据
DataObject graph = mediator.getGraph();
|
注意,此时您只建立了单一数据源连接(到 DB2 Information Integrator 服务器),来检索多个数据源中分布的数据。不使用 DB2 Information Integrator 中的 EII 技术,就必须建立多个数据源连接,并定义多个元数据和中介对象(每个数据源一个)。而且,最终将得到多个 DataObjects(每个数据源至少一个),对于这些 DataObjects,或者必须将它们传送到调用应用程序进行集成,或者必须在组件中对它们进行手工集成。使用 DB2 Information Integrator 使您避免了这些额外的编码工作,也不需要为检索和集成异类 JDBC 数据来设计高效数据访问策略并进行编码。
步骤 3:断开数据库连接
利用从存储器内图中检索的必需数据,您可以使用 SDO 编程模型的断开连接特性。您已经选择在此时释放活动数据库连接:
清单 7. 关闭数据库连接和连接包装器
. . .
if (connection != null) {
connection.close();
connectionWrapper = null;
}
. . .
|
注意:关闭数据库连接的最佳时间取决于 Web 应用程序的特定业务逻辑。
步骤 4:处理数据
此时,您可以继续脱机使用数据,按照所希望的那样处理数据。下面是通过数据图进行迭代的一个简单方法,可以用它指出与图关联的数据部分。
清单 8. 通过返回的数据进行迭代
. . .
Iterator i = graph.getList("SAMPLE_PARTS").iterator();
while (i.hasNext()){
DataObject part = (DataObject) i.next();
System.out.println(part.getInt("P_PARTKEY") + " " +
part.getString("P_MFGR") + " " +
part.getString("P_TYPE"));
}
. . .
|
SDO 编程模型支持检索持久存储数据,并支持在存储数据源断开连接时更改此数据。这种用于乐观并发控制机制的模型调用(构建到数据中介服务中或直接由编程人员实现)可以检测并解决可能发生的更新冲突。特定的并发控制机制因商业 SDO 实现而有所不同,但这超出了本文的讨论范围。
如果已经编写了示例 SDO 应用程序来断开与数据库的连接并脱机更改数据,那么您稍后可以请求将这些更改应用到数据库中。这样做的话需要建立数据库连接和执行相关工作;那时您可以发出如下所示的语句来更新数据库:
清单 9. 将更改应用到数据库
mediator.applyChanges(graph);
|
如果成功(即如果没有检测到有冲突的更新),在单一事务情况下,所有脱机对数据进行的更改都将应用到数据库中。
使用 JavaServer Pages (JSP) 生成工具
WebSphere Studio 还提供了一些早期版本的工具,以图形表示构造包含 SDO 组件的动态 JSP。我们将简要说明如何将 DB2 II V8.1(FP2 或更新的版本)服务与此工具集成。不过通过直接向 JDBC 数据中介服务 API 写入可以获得更高的性能。
通常,当使用可通过 DB2 Information Integrator 访问的数据生成合并 SDO 组件的 JSP 时,标准开发过程不发生变化。通过向导,昵称将作为标准表显示。
如果您不熟悉 SDO 工具,本文提供了开发过程的快速浏览。本例创建了包含 DataList 对象(行的集合)的动态 JSP,该对象映射到 DB2 Information Integrator 昵称。在此环境中,昵称映射到提交给外部队列的项的集合。
开始工作之前先创建适合的项目:
-
打开 Web 透视图,创建新的 Dynamic Web 项目。指定项目名称并确保选中了“Configure advanced options”框。单击
Next。
-
为 EAR 文件和上下文根(context root)指定一个名称。选择使用 J2EE level 1.3。单击
Next。
-
在 Project Features Page 中,选中“WDO relational database runtime”和“JSP Standard Tag Library”复选框。单击
Next。(注意:SDO 的早期版本通常称它为“WDO”或 Web Data Objects)。
-
选择“Use a default Page Template . . .”并从显示的缩略图中选择一个。单击
Finish。
然后,向项目中添加新的 JSP:
-
右击新的项目。选择
New -> JSP File。
-
提供新的 JSP 文件名,并验证已选中了“Configure advanced options”复选框。单击
Finish。
此时,应该显示新的 JSP 页面,而且可以对它进行编辑。按如下所示方式修改页面:
-
选择
Insert -> Table。
-
将光标放在表内并选择
Insert -> Data -> Relational Data List。出现一个向导。
-
指定 Data List 的名称并单击 Connection name 字段旁边的
“New . . .”按钮。选择
“New Connection”并单击
Next。
-
提供 DB2 Information Integrator 数据库的适当连接信息。其中包括数据库名称、有效用户 ID 和口令。指定 Database Vendor Type 为 DB2 UDB V8.1,并选择适当的 JDBC 驱动程序(我们使用 IBM DB2 APP DRIVER)。更新类位置,以指向包含 db2java.zip 文件的目录。单击
Finish。
-
从显示的列表中选择昵称或表。设置 Scope 为“Session”并单击
Next。
-
选择数据列表中要包含的列。如果需要,单击“Modify primary key”并确保至少指定了一列作为主键。单击
Finish。
创建了 JSP 后,保存您的操作并在选择的 WebSphere 5.1 测试服务器上运行该 JSP。下图显示了使用 DB2 Information Integrator 访问 XML 文件中存储的数据而构建的 JSP。
图 6. 使用 SDO 工具早期版本和 DB2 Information Integrator 创建的示例 JSP 的运行时
开发技巧
SDO 是一种在当前 IBM 的 WebSphere Studio 和 WebSphere Application Server 产品的早期版本级别上受支持的新兴技术。EII 技术出现在大约十年前,由于技术的发展,从去年开始它的应用大大增加。IBM 的 EII 提供了 DB2 Information Integrator,您可以用它来实现本文描述的任务。
遵从下列建议,您可以对组合的 SDO 和 EII 解决方案有一个入门了解:
-
该解决方案致力于原型和实验项目,而不是致力于生产应用程序,因为 SDO 支持仍处于早期版本级别上。
-
评估您的目标项目是否很好地适合这些技术。通常,最好选择包含读密集型、基于 Web 的应用程序的项目,这些应用程序需要集成来自异类数据源的数据。
-
使用尽可能小的数据集合,避免在应用程序内消耗过多内存。按照前面描述的那样在元数据对象中指定筛选条件,可以限制返回到 SDO 的数据量。
-
使用 DB2 Information Integrator 中的视图来表示需要从多个异类数据源连接、联合或相关的数据。让您的 SDO 数据图基于这些视图,而不是手工单独地从每个数据源中检索数据,然后再手工将这些数据集成到 Java 组件内的某一个图中。
-
熟悉可通过 SDO、WebSphere Application Server 和 DB2 Information Integrator 使用的诊断服务。这有助于您调试可能遇到的任何错误。
-
参考本文结尾提供的参考资料并加入新闻组,以便更好地了解这些技术以及其他人如何使用这些技术。
结束语
SDO 和 EII 技术为 Java 体系结构提供了对各种数据源的单一的、基于对象的 API。SDO 的断开连接编程模型和简单的编程接口吸引了许多基于 Web 的应用程序和组件的开发人员。EII 的广泛数据源支持、位置透明和全局查询最佳化服务,扩展并提高了 SDO 编程人员的数据访问能力,同时减少了设计和编码需要。
本文阐述了如何在面向服务的体系结构中将 SDO 和 EII 技术进行集成。本文特别介绍了对于 SDO(在早期版本级别可用)和 DB2 Information Integrator 中的 EII 技术,WebSphere Studio 编程人员如何使用 JDBC 数据中介服务为前端 Java 组件构建虚拟数据访问服务层。
致谢
感谢那些对本文进行审校的人员。审校人员按字母顺序排列:Atul Chadha、Connie Nelin、Kevin Williams 和 Dan Wolfson。此外,还要感谢 Kevin Williams 和 Brent Daniel 提供了其文章“An Introduction to Service Data Objects”的初稿。
参考资料
- 您可以参阅本文在 developerWorks 全球站点上的
英文原文.
-
Barcia, Roland.
运用 WebSphere Studio V5.1.1 开发 JSF 应用程序 —— 第 3 部分,
IBM WebSphere 技术期刊and
IBM developerWorks, March 17, 2004.
-
Beatty, John and Stephen Brodsky, Martin Nally, Rahul Patel.
Next-Generation Data Programming: Service Data Objects, joint IBM and BEA Systems white paper, Number 2003.
-
Budinsky, Frank and David Steinberg, Ed Merks, Ray Ellersick, Timothy Grose.
Eclipse Modeling Framework, Addison Wesley Professional, ISBN 0131425420, August 2003.
-
The Eclipse Modeling Framework (EMF) Overview, Eclipse Project Document, June 1, 2004.
- Haas, Laura and Eileen Lin.
IBM 联邦数据库技术,
IBM developerWorks, March 2002.
- Saracco, C. M.
在 Web 应用程序中使用全异数据,
IBM developerWorks. August 2002.
- Saracco, C. M. and Jacques Labrie, Julien Muller.
用 Enterprise Information Integration 技术构建门户,
IBM developerWorks, March 2004.
- Saracco, C. M. and Susanne Englert, Ingmar Gebert.
将 DB2 Information Integrator 用于 J2EE 开发:成本/收益分析,
IBM developerWorks, May 2003.
- Saracco, C. M. and T. J. Reiger.
针对各种全异的数据源开发实体 EJB 的经验之谈 ,
IBM developerWorks, May 2003.
-
Specifications: Service Data Objects, WorkManager, and Timers, IBM and BEA,
IBM developerWorks, Nov. 25, 2003.
作者简介  | |  | Cynthia M. Saracco 是 IBM 硅谷实验室的资深软件工程师。她曾编写过两本关于数据库管理方面的书(其中一本是与 Charles J. Bontempo 合著),并为圣克鲁兹大学扩展计划教授过课程,
从事过各种涉及数据库管理和 Web 技术的软件项目。 |
 | |  | Jacques Labrie 是 IBM 硅谷实验室的资深软件工程师。最近的 15 年时间他都在开发和管理数据管理产品,目前将主要精力放在 DB2 II 与 WebSphere 产品家族的集成上。 |
 | |  | Stephen A. Brodsky, PhD 是 IBM 硅谷实验室的资深技术人员。曾经致力于无数软件体系结构的研究,其中包括 SDO、WebSphere Studio、Eclipse Modeling Framework (EMF) 和 XMI (XML Metadata Interchange)。还曾合著过 XMI 方面的书籍。 |
对本文的评价
|