- ·上一篇教程:样本 DB2 Web 服务实现总结(第一部分)
- ·下一篇教程:Web 服务保密性、安全性和精确性
样本 DB2 Web 服务总结(第二部分)
2002 年 5 月
DB2 处于数据库 Web 服务技术的前沿。IBM Video Central 是一个样本 DB2 Web 服务应用程序。第二部分描述了最新的更新,包括 NetSearch Extender、XML Extender 和 WebSphere Application Server 及 WebSphere Studio 工具的更新版的使用。
简介
在本文的 第 1 部分中,我们概述了 Web 服务样本应用程序,即 IBM Video Central,还介绍了其体系结构和关键技术。自那时起,我们已经用 IBM 提供的新技术和新开发环境更新了这个 Video Central 应用程序。在这第二部分中,我们描述了 Video Central 应用程序的新功能,包括:
- 使用 DB2 ®Net Search Extender,名为 Movie Search 的新的 Web 服务
- 一个新的开发环境,WebSphere ®Studio Application Developer V4
- 一个新版本 Web 服务服务器,WebSphere Application Server V4
- 使用 DB2 XML Extender 实现的用户违规(User Infraction)Web 服务
我们还将描述可以如何修改 Video Central 以利用文档访问定义扩展(Document Access Definition eXtension,DADX)这种新方法。
为了文章的完整以及描述的方便,我们将在这里包含本文第一部分中的部分内容。要下载此 Web 服务教程的新版本,请访问 www.ibm.com/software/data/developer/samples/video/。
Web 服务概述
IBM Video Central 是一个样本应用程序,它演示了 Web 服务应用程序从开发到部署的整个构建过程。Web 服务是一种用于集成电子商务应用程序的新开发模型。Web 服务模型为在分布式计算环境中描述、发布、发现和调用业务功能提供了标准技术。 图 1演示了 Web 服务中的基本概念。
|
图 1. Web 服务的发布、查找及绑定体系结构
|
Web 服务编程模型是基于下面这些新兴技术的:
- Web 服务描述语言(Web Services Description Language,WSDL)是一种描述 Web 服务的标准 XML 格式,它充当使应用程序通信过程中所涉及的细节自动化的方法。
- 统一描述、发现和集成(Universal Description, Discover and Integration,UDDI)创建了一个全局且独立于平台的开放框架,它使企业能够相互发现并能够定义它们相互之间的交互方式和信息共享方式。
- 简单对象访问协议(Simple Object Access Protocol, SOAP)是一种轻量级协议,用于在分散的分布式环境中交换信息。可以使用超文本传输协议(Hyper Text Transfer Protocol, HTTP)这一标准因特网协议来传输 SOAP 消息。
- 可扩展标记语言(eXtensible Markup Language, XML)是一种用于交换信息的标准标记语言。
服务 提供者将他们的业务功能以 Web 服务的形式发布到服务 代理。服务 请求者使用 UDDI 搜索可用的服务,然后使用由 WSDL 定义的接口来调用应用程序逻辑。利用 Web 服务并不一定需要 UDDI 企业注册中心。可以使用 WSDL 文档来调用独立于企业注册中心的 Web 服务。IBM Video Central 解决方案并不使用 UDDI 注册中心。
IBM 启用它自己的具备 Web 服务能力的关键产品。已经有了用于自动生成、发布、查找、测试和调用 Web 服务的工具。IBM Video Central 教程演示了如何使用下列软件:
- WebSphere Studio Application DeveloperV4 是一个完整的 Java TM开发环境,用于满足包括 Java、J2EE、XML、Web 服务和测试在内的各种新型应用程序的需要。
- WebSphere Application Server V4是一个 Java 2 平台,企业版(Java 2 Platform, Enterprise Edition, J2EE 1.2)服务器,它将企业数据和事务在电子商务领域内集成起来。它提供了一个丰富的电子商务应用程序部署环境,这一部署环境具有一整套应用程序服务,包括事务管理、安全性、群集、性能、可用性、连通性和可伸缩性方面的能力。
- DB2 Universal Database TM 是一个高度可伸缩的数据库服务器。 DB2 XML Extender动态 XML 映射能力和 DB2 Net Search Extender高速全文本检索引擎都扩展了 DB2 的能力。通过引入文档访问定义扩展(DADX)技术,DB2 能够充当 Web 服务提供者。
v
IBM Video Central 是一个用于录像租借应用程序的通用(虚构的)Web 服务提供者。它提供了一个可由基于 Web 的已注册应用程序访问的中央数据资源库。我们设计了一个特定的与商家有关的 Web 服务: 商家注册(Business Registration),它允许商家(例如,录像店)向 IBM Video Central 注册它们自己。在商家向 IBM Video Central 注册之后,该商家就被允许使用其它可用的 Web 服务。
我们设计了五个与客户有关的特殊 Web 服务,其中, 影片搜索(Movie Search)是 IBM Video Central 的新功能。
- 客户注册(Customer Registration),它使已注册的商家能够向 Video Central 注册它们自己的客户。在注册了某个客户之后,其它服务就可以存储、访问和分析有关该客户的有用信息。
- 客户违规(Customer Infraction),它使已注册的商家能够向中央资源库添加违规信息,也能够从中央资源库查询违规信息。这就使得商家无需在它们的本地数据库中实际存储和管理数据就能够跟踪客户违规。
- 客户已租借列表(Customer Rented List),它使已注册的商家能够添加和查询已租借出去的录像。将来,当添加了数据挖掘和商业智能服务时,这个数据集合将被证明越来越有用。
- 客户感兴趣影片列表(Customer Wish List),它使已注册的商家能够添加和查询客户表明有兴趣在将来观看的影片。音像店可以使用这些列表来确定哪些录像有需求,并据此修改其库存采购计划。
- 影片搜索(Movie Search),它使已注册的商家能够搜索电影片名和电影故事梗概。商家不必手工将所有数据输入本地数据库,它们可以进行在线搜索当前的以及不断更新的电影信息。
IBM Video Central 体系结构
IBM Video Central 是作为三层的应用程序实现的,包括:
- Web 界面层
- 业务逻辑层
- 数据访问层
这种三层方法是一种灵活的和基于组件的实现,旨在方便将来通过可扩展框架进行的增强。 图 2显示了 IBM Video Central 的体系结构。
Web 界面层
为了支持不同的 Web 界面,可以实现 Web 界面层,这些不同的 Web 界面包括 Web 服务、HTTP Servlet 或 Java TMServer Pages (JSP) 等。这为最终用户界面设计提供了最大的灵活性。我们在 Video Central 中使用用于 Web 服务调用的 SOAP 运行时来实现 Web 服务接口。
业务逻辑层
业务逻辑层是使用 Web 服务作为抽象层设计的。每个 Web 服务都定义了一组业务过程,接口是使用 WSDL 描述的。接着,将 WSDL 接口发布到公共或私有 UDDI 注册中心。该层中的 Web 服务由包含在(位于服务提供者站点上的)WebSphere Application Server 中的 SOAP 运行时调用,对于所有的数据库访问,Web 服务组件都向数据访问层(Data Access Layer)发送请求。
数据访问层
数据访问层负责所有数据库访问工作。DB2 通用数据库是一种高度可伸缩的数据库服务器。IBM Video Central 演示了两个 DB2 Extender TM,DB2 XML Extender 和 DB2 Net Search Extender。Video Central 的一个 Web 服务 — 客户违规用到了 DB2 XML Extender 来管理客户违规资源库,以便存储和检索。使用 XML Extender 的优点在于:程序员无需编写程序来解析 XML 文档和从 DB2 生成 XML 文档。 影片搜索 Web 服务用到了 DB2 Net Search Extender,以便对录像片名和故事梗概进行高速内存中搜索。
|
图 2. IBM Video Central 体系结构
|
在本文的 第 1 部分中,我们描述了 Web 服务应用程序从开发到部署的构建步骤,以及到 2001 年 6 月能够获得的技术和工具。在这里,我们将不再赘述,但我们将着重于 IBM Video Central 所采用的新技术。
使用 WebSphere Studio Application Developer 的快速应用程序开发
WebSphere Studio Application Developer 是一个完整的 Java、Web、Web 服务、Enterprise JavaBeans (EJB) 和 XML 开发环境。它提供了一些向导以及其它一些工具,因而能够用它来快速开发 Web 服务应用程序。WebSphere Studio Application Developer 中提供的 Web 服务开发工具基于开放和跨平台的标准:统一描述、发现和集成(UDDI)、简单对象访问协议(SOAP)和 Web 服务描述语言(WSDL)。为了帮助构建和部署支持 Web 服务的应用程序,WebSphere Studio Application Developer 简化了下列过程:
- 创建或转换。从现有的构件(如 Java bean 和 XML 文档)创建 Web 服务。
- 构建。将现有的构件包装为 SOAP 和 HTTP 可访问服务并用 WSDL 描述它们。Web 服务向导帮助您生成用 WSDL 描述的 Web 服务的 SOAP 代理,还帮助生成类的 bean 框架。
- 部署。在 WebSphere Application Server 或 Tomcat 测试环境中部署 Web 服务。
- 开发。生成样本应用程序来帮助您创建 Web 服务客户机应用程序。
- 测试。测试在本地运行或远程运行的 Web 服务。
- 发布。将 Web 服务发布到 UDDI 企业注册中心,以公布您的 Web 服务,以便其它企业能够访问它们。
- 发现。浏览 UDDI 企业注册中心以找到现有 Web 服务,以便集成。
WebSphere Studio Application Developer 提供了一个综合的 XML 开发环境,该环境中包含用于构建文档类型定义(Document Type Definition, DTD)、XML 模式和 XML 文件的工具。它还支持关系数据与 XML 的集成。您可以使用关系数据库到 XML 映射编辑器(Relational Database (RDB) to XML Mapping Editor)来轻易地将关系数据映射成 XML 格式。该编辑器可以将一个或多个关系表中的列映射成 XML 文档中的元素和属性。它可以生成文档访问定义(Document Access Definition, DAD)文件,DB2 XML Extender 使用该文件从现有 DB2 数据生成 XML 文档,或将 XML 文档分解成 DB2 数据。
WebSphere Studio Application Developer 含有一个关系数据库环境,用于创建和操作为项目设计的数据。它是一种用于导航、导入、设计和查询数据库的环境。SQL Query Builder 为创建和执行 SQL 语句提供了一个可视化界面。
WebSphere Studio Application Developer 为测试企业应用程序提供了测试及发布工具。它为测试 JSP、servlet 和 HTML 文件提供了单元测试环境。它还能配置其它本地或远程服务器,以便集成 Web 和 EJB 应用程序的测试及调试。服务器可以是 WebSphere Application Server、Apache Tomcat 或 TCP/IP Monitoring Server。
总的来说,WebSphere Studio Application Developer 是一个强大的集成开发环境,它为 Web 服务应用程序开发提供了一个完整的解决方案。我们还要指出的是:WebSphere Studio Application Developer 还有众多其它功能,但在本文中没有加以讨论。对于如何使用 WebSphere Studio Application Developer 来开发 Web 服务应用程序, Video Central 教程中含有循序渐进的相关指示信息。
使用 DB2 XML Extender 来存储和检索 XML 数据
DB2 XML Extender 集成了 DB2 通用数据库的能力和 XML 的灵活性。它提供了存储和访问 XML 文档的能力,以及从现有的关系数据生成 XML 文档的能力。它可以将 XML 文档分解成关系数据,也就是说,它对文档进行解构,然后存储不带标记的元素或属性内容,这些内容可以被 DB2 索引,也可以使用 SQL 来加以访问。它还提供了新的数据类型、函数和存储过程来在 DB2 中管理 XML 数据。IBM Video Central 演示了如何使用 XML Extender 提供的组合及分解存储过程。
分解 XML 文档
图 3显示了添加客户违规请求的处理流程。含有违规数据的 XML 文档被发送到 IBM Video Central 的客户违规 Web 服务。该服务调用 XML Extender 的存储过程 db2xml.dxxShredXML(),然后传递 DAD 和 XML 文档参数值。XML Extender 接下来将 XML 文档中的违规数据分解到 DB2 数据库中。根据 DAD 文件中的通用关系数据库映射,数据被存储在 USERINFRACT 表中。
|
图 3. 添加违规请求的处理流程
|
组合 XML 文档
图 4显示了查询客户违规请求的流程。我们使用 XML Extender 的组合存储过程 db2xml.dxxGenXML() 来在 XML 文档中生成客户违规数据。要调用该存储过程,我们需要提供将 XML 文档映射成表中数据的 DAD 文件。我们使用一个结果表来存储执行存储过程所生成的 XML 文档。在调用 db2xml.dxxGenXML() 时,我们可以指定一条 SQL 语句,它可以覆盖 DAD 文件中的 SQL SELECT 语句。执行完之后,违规数据被存储在 XMLCLOB 列中。接下来,动态生成的 XML 文档与响应对象一起返回给 Web 服务客户机。
|
图 4. 查询违规请求的处理流程
|
XML Extender V7.2 修订包 4 引入了一个名为 db2xml.dxxGenXMLCLOB() 的新型组合存储过程。该存储过程类似于 db2xml.dxxGenXML,不同之处在于 XML 文档作为输出存储过程参数返回到内存中。以下是该组合存储过程的说明:
清单 1:XML Extender dxxGenXMLCLOB 存储过程
|
作为输入,db2xml.dxxGenXMLCLOB 获取一个含有 DAD 文件的缓冲区。它使用存储在由 DAD 文件中指定的 XML 集合表中的数据构建 XML 文档,同时返回生成到 CLOB 输出参数 resultDoc中的第一个通常也是唯一一个 XML 文档。 清单 2显示了如何在 Java 程序中使用 db2xml.dxxGenXMLCLOB。
清单 2. 在 Java 中使用 dxxGenXMLCLOB
|
通过使用上面的 Java 代码,我们不再需要结果表( 图 4中的 QUERY_RESULT_TAB 表),这意味着:我们无需生成临时表,也避免了当许多客户机同时请求违规数据时保持公共持久结果表的问题。为了检索含有 XML 文档的 CLOB 输出参数,我们使用了 java.sql.CallableStatement 类提供的 getClob() 方法。IBM Video Central 的新版本不使用新的存储过程 db2xml.dxxGenXMLCLOB()。不过,您可以使用 清单 2 中所示的样本代码来自己进行尝试。如果您不想尝试,那么请使用下面的修订包级别:
- DB2 XML Extender V7.2, 修订包 6
- DB2 通用数据库 V7.2, 修订包 6
使用 DB2 Net Search Extender 来进行高速文本搜索
IBM Video Central 为其影片搜索 Web 服务使用了 DB2 Net Search Extender 的快速文本搜索引擎。Net Search Extender 提供了下列功能,它们补充了 DB2 Text Extender 和 DB2 Text Information Extender 的功能:
- 创建索引:
- 提供一种非常快捷的索引类型 Ngram。
- 允许同一文本列上具有多个索引。
- 处理索引创建而无须锁定数据。
- 递增地更新索引以反映数据库中的变化。
- 搜索:
- 在服务器上提供一个存储过程。
- 允许进行字、短语、词干或模糊查询。
- 将搜索标识为或限制为文档中已由特殊标记标明的部分。
- 提供对一定范围的值进行数字搜索。
- 支持布尔和通配符操作。
- 搜索结果:
- 让您在创建索引时指定搜索结果的排序方式,或者对排序使用等级值。
- 让您在搜索大数据卷同时预期会有大型结果列表时指定搜索结果子集。
- 让您用高命中数对搜索条件设置限制。
- 允许在搜索结果中定位(游标设置)。
Net Search Extender 具有能够对超大数据量快速创建索引以及在内存中为大量并发用户进行高速搜索的优点。
我们在 Video Central 中有两个表 IVC.TITLEINFO 和 IVC.TITLEPLOT,分别用来存储影片名和影片故事梗概。影片搜索 Web 服务允许根据影片信息或电影情节进行搜索。 图 5显示了在 Video Central 支持高速影片搜索功能所需的步骤。在使用所提供的存储过程 textSearch() 之前,必须先启用一个数据库以便使用 Net Search Extender,还必须启用表的文本列。存储过程以结果集的形式返回搜索结果。请参考类 MovieDataAccess,搞清楚如何使用从 Java 程序中使用 Net Search Extender 提供的存储过程。
在 IBM Video Central 的样本客户机中,在处理 影片搜索请求时,会从类 ReqHandlerFactory 中创建一个影片搜索处理程序(类 MSHandler)。在影片搜索处理程序中,对 MovieSearchProxy(从 Video Central 的影片搜索 WSDL 文档生成的)进行了实例化,并通过代理调用了搜索请求并将其发送到 Video Central 中的 SOAP 运行时。有关详细信息,请参考客户机代码中的 MSHandler 类。
|
图 5. 在 Video Central 应用程序中使用 Net Search Extender
|
使用 WebSphere Application Server V4.0 作为 Web 服务服务器
Java TM 2 平台,企业版(J2EE)为公司开发可移植的、高度可伸缩的应用程序提供了路线图。WebSphere 4.0 符合 J2EE 1.2,包含以下三个类别:
- 组件
- Enterprise JavaBeans(EJB)1.1
- JavaServer Pages(JSP)1.1
- Servlet 2.2
- 服务
- Java 命名与目录接口(Java Naming and Directory Interface, JNDI)1.2
- JDBC 2.0
- 通信
- Java 消息服务(Java Message Service, JMS)1.0
- JavaMail 1.1
与 WebSphere Application Server V4.0 一起提供的其它技术包括:
- J2EE 1.3 预览功能
- Java 2 连接器(Java 2 Connectors, J2C)
- JMS/XA
- JMS 侦听器(JMS Listener)
- 工作负载管理(可伸缩性支持)
- Web 服务
与 WebSphere 3.5 相比,WebSphere 4.0 也有新的、经过改进的工具:
- 应用程序装配工具(Application Assembly Tool, AAT):以 EAR 或 WAR 文件装配企业应用程序以便部署到 WebSphere 中。
- EJBDeploy:准备 Enterprise JavaBeans 用于部署,它是一个命令行工具,由图形 AAT 在幕后调用。
- SEAppInstall:在单服务器版安装应用程序
- 改进的日志分析器(Improved Log Analyzer):对日志进行排序、组织、分隔和分析,显示更多(如有关哪个线程标识以及哪个进程标识是事件的来源的)详细信息。
- 经过改进的资源分析器(Improved Resource Analyzer):记录以下这些方面的详细信息:WebSphere 正在处理什么请求以及处理这些请求的速度。
WebSphere 4.0 提供强大的 Web 服务支持。 图 6显示了 WebSphere 4.0 是如何支持 Web 服务的。
|
图 6. WebSphere 4.0 对 Web 服务的支持
|
WebSphere Application Server 同时支持 SOAP 服务器和客户机环境。这使得 WebSphere 应用程序能够发送和接收 SOAP 消息。WebSphere 将 Java 接口集成到了 UDDI,这使得 WebSphere 应用程序能够发布和查找 Web 服务。SOAP 集成使得部署在 WebSphere 平台上的 Web 服务能够利用诸如安全性、事务监控和跟踪/调试功能之类的平台优势。为了使企业应用程序能够使用 SOAP 环境,WebSphere 提供了 SOAPEarEnable 脚本,它从原始的 EAR 文件和 SOAP 部署描述符创建支持 SOAP 的 EAR 文件。如果使用 WebSphere Studio Application Developer 作为开发工具,那么就可以从 Web 服务应用程序自动生成支持 SOAP 的 EAR 文件。
另一种使用 DADX 的数据访问机制
IBM Video Central 的当前版本不使用 DADX。本节重点讨论了 DADX 技术以及如何使用该技术来简化 IBM Video Central 所提供的 Web 服务的实现。更多关于 DADX 的信息,请参考 Reto Preisig 在 DB2 开发者园地中的 文章。
DADX 是一种 XML 技术,用于创建访问关系数据库的 Web 服务。它是 XML Extender 文档访问定义(DAD)文件的扩展。DADX 使得人们可以很容易地创建存储和检索 XML 数据以及关系数据的 Web 服务。DADX 文档指定如何使用一组操作创建 Web 服务,这组操作由 SQL 语句定义,也可以由 DAD 文件定义。正如前面所讨论的那样,DAD 文件用于定义 XML 和关系数据的映射。DADX 文件中指定的 Web 服务称为 DADX Web 服务。 清单 3是一个简单的 DADX 文件:
清单 3. DADX 文件
|
DADX Web 服务由 Web 服务对象运行时框架(Web services Object Runtime Framework, WORF)工具实现。WORF 为在 SOAP 2.2 中将 DADX 文档作为 Web 服务调用提供了运行时支持,WebSphere Application Server 和 Jakarta Tomcat 支持 SOAP 2.2。WORF 支持下列操作:
- SQL 操作:
- <query>:查询数据库
- <update>:更新数据库
- <call>:调用存储过程
- XML 集合操作:
- <retrieveXML>:生成 XML 文档
- <storeXML>:存储 XML 文档
WORF 通过使用 XML 集合方法支持生成及存储 XML 文档,它还允许存储过程和 SQL 语句以 Web 服务操作的形式出现。此外,WORF 可以根据服务请求 URL 中指定的命令生成测试页面、WSDL 文档和 XML 模式定义(XML Schema Definition, XSD):
- 测试:生成带有 DADX 服务文档的测试页面。它从测试页面获取输入,调用 Web 服务然后以 XML 文档形式返回结果。
- WSDL:为 DADX 服务生成 WSDL 文档。可以向服务请求者提供 WSDL 文档。
- XSD:生成 XSD,XSD 含有 Web 服务接口中所使用的数据类型。
图 7是 WORF 框架的概述。 清单 4显示了服务请求所调用的 DADX 文件。
清单 4. 被调用以请求部门列表的 DADX
|
WORF 接收 HTTP SOAP GET 或 POST 服务请求。请求的 URL 指定 DADX 以及请求的操作,前者也可以包含输入参数,后者可以是 DADX 操作或命令。WORF 装入请求中指定的 DADX 文件。然后,对于操作,它装入 DAD 文件(如果了请求了这一文件的话),用请求的值替换参数,连接到 DB2 并运行包括 SQL 调用在内的任何 SQL 语句,然后将结果格式化成 XML。对于命令,它生成必要的文件、测试页面以及其它所需的响应。
|
图 7. WORF 框架概述
|
WebSphere Studio Application Developer 提供了一些工具来创建 DADX 文件。 XML from the SQL向导支持从 SQL 查询和/或 DAD 文件创建 DADX 文件,如 图 8中所示。这使得创建数据访问 Web 服务变得容易得多。
注:也可以在 WebSphere Studio Application Developer 以外使用任何文本编辑器创建必需的 DADX 文件来创建 DB2 Web 服务。
在 WebSphere Studio Application Developer 中创建了 DADX 文件之后,您可以使用 Web services DADX Group Configuration向导来配置数据库连接,然后可以使用 Web Services向导生成 WSDL 文档、部署描述符、客户机代理、特性映射、部署映射,并测试 DADX Web 服务,准备将 Web 服务发布到 UDDI 注册中心。
|
图 8. 在 WebSphere Studio Application Developer 中创建 DADX 文件
|
清单 5 中显示了生成的 DADX 文件。
清单 5. WebSphere Studio Application Developer 生成的一个 DADX 文件
|
您可以尝试使用 DADX 来实现 IBM Video Central 服务。 清单 6是客户感兴趣的影片列表 Web 服务的样本 DADX。它是从 WebSphere Studio Application Developer 生成的。可以自己尝试它,从而通过使用 DADX 来修改 IBM Video Central。
清单 6. 处理感兴趣影片列表信息的 DADX
|
结束语
IBM Video Central 是 IBM 电子商务解决方案的一个样本应用程序,它是使用 IBM 所提供的最先进技术实现的。本文紧密结合文章的第一部分,总结了 IBMVideo Central 样本应用程序的新版本,着重讨论了新技术和作为 Web 服务提供者的 DB2 通用数据库。本文的目的是为了概述 Web 服务和 IBM Video Central。可以从我们的 IBM Video Central 教程中找到更多信息。





