尽管基于符合标准的中间件的面向服务的体系结构 (SOA) 在该领域获得了广泛的关注,但数据库 Web 服务(通过 HTTP 和 SOAP 等标准 Web 服务机制调用数据库操作)却非常流行。 根据 2004 Evans Data Corporation 调查,超过三分之二的调查对象表示他们正在开发或部署。
Oracle 数据库 10g 可以在两个 Web 服务模式下工作: 作为 Web 服务使用方(从数据库内部调用外部 Web 服务)或 Web 服务提供方(客户端通过 Internet/Intranet 调用数据库操作,从而对这些操作进行“虚拟化”)。 Oracle 数据库 10g 同时支持这两个模式 — 在使用方模式下,生成 Java 代理类和 PL/SQL 包装程序,并根据给定的 Web 服务定义语言 (WSDL) 文件将相应的文件加载到数据库中;在提供方模式下,支持在 SOA 中将 PL/SQL、Java 存储过程、SQL 查询和 SQL DML 发布为 Web 服务。 (有关更多详细信息,请参见技术白皮书“Oracle 数据库 10g 中 Java DB、JDBC 和数据库 Web 服务的新特性”)。
在本文中,我将从较高层面对这两种类型的数据库 Web 服务进行介绍,循序渐进地指导您如何运行自己的数据库 Web 服务演示,并将阐述在 SOA 中集成数据库 Web 服务的好处。
有关开发和部署数据库 Web 服务的更多信息,请参见我撰写的一书(该书即将由 Elsevier Digital Press 出版);您可以在下载“预览”章节。 该书将包含更多数据库 Web 服务示例。
将数据库用作 Web 服务使用方
通过将数据库用作 Web 服务使用方,数据库的涵盖范围得以扩展(通过 SQL 查询或批处理作业/计划作业),其中将包括动态数据(如股票价格)、按需生成的数据(如信用卡授权)、定期更改的数据(如 IRS 表)或原有系统(通过 Web 服务包装程序)以及任何通常可以通过 Web 服务机制(如联机生物信息学/基因组数据库)访问的数据。
首先,我们了解一下如何为 Oracle 数据库提供 Web 服务支持。
Web 服务调出实用程序。 以 OTN 中形式提供的数据库 Web 服务调出实用程序(在 Oracle9i 和 Oracle 10g 版本中)通过将纯 Java Web 服务客户端程序系列加载到数据库中,将现有数据库转换为 Web 服务使用方。 这是一个一次性操作。
将该调出实用程序解压缩到 $ORACLE_HOME 下。
将 dbwsclient.jar 文件加载到 SYS 模式(实现共享)中,或加载到将从中调用 Web 服务客户端的特定模式中: