本文讨论 DB2 for z/OS 存储过程以及把它们包装在 Web 服务中的好处。讨论如何使用 IBM Data Studio Developer 创建和部署使用 Data Web Services 特性的 Web 服务。还讨论如何使用 XSLT 样式表处理把 Web 服务的 XML 响应转换为基于 HTML 的 Web 浏览器交互。
本文是两篇系列文章的第一篇。第 2 部分讨论如何使用 DB2 for z/OS 用户定义函数 (UDF) 把 z/OS 数据集和 UNIX® System Services (USS) 文件信息解释成 Data Web Services 操作。
本文假设您知道什么是 IBM Data Web Services,熟悉使用 IBM Data Studio Developer 创建、测试和部署 IBM Data Web Services 的基本过程。如果您不熟悉这两个主题,请参考 参考资料 中的相关链接。
另外,如果先下载并提取 下载 中的 AccountInquiry.zip 文件中的源代码,会对学习本文有帮助。
存储过程常常用来整合和集中那些原来在应用程序中实现的逻辑。需要执行多个 SQL 语句的大型或复杂的处理可以转移到服务器端存储过程中,从而向企业应用程序提供集中的接口。
DB2 for z/OS 支持以下存储过程类型:
SQL 过程是完全用 SQL 编写的,可以通过 SQL 操作访问 DB2 资源。不能从 SQL 过程访问非 DB2 资源。
外部 DB2 for z/OS 存储过程是服务器端应用程序,可以用不同的编程语言编写,包括 COBOL。存储过程程序可以访问 DB2 数据和传统的非 DB2 资源,比如 QSAM 和 VSAM 数据集、消息队列、CICS 程序、IMS 事务和数据库。另外,外部存储过程程序可以以子程序形式调用现有的应用程序,从而重用现有的业务逻辑。
其他存储过程以及使用嵌入式 SQL、.NET、ODBC 或 Java 的 DB2 客户机应用程序可以调用存储过程。z/OS 外部存储过程运行时环境由 z/OS Workload Manager (WLM) 管理。
自从 DB2 for z/OS 中引入存储过程以来,存储过程已经发展成一种成熟健壮的技术,许多组织使用它们处理大量事务性工作负载。使用存储过程常见的原因包括:
封装了业务功能的 DB2 for z/OS 存储过程很适合在 Data Web Services 中重用。它们提供可重用的服务,以可控的方式公开现有系统的功能。例如,服务接口(SOA 中最关键的组件)已经存在了(尽管不是 Web 服务接口的形式),不同部门和业务线中的企业应用程序正在使用它们。底层数据的质量分析已经成功地完成了。对于现有的存储过程,代码已经开发完成并经过测试,它们已经成为 IT 基础结构的一部分,能够满足现有服务水平协议 (SLA) 的要求。使用 Web 服务接口公开这些存储过程,让更多的应用程序可以使用它们。
为了说明 DB2 for z/OS 存储过程的价值和使用方法,本文以一个现有的示例业务场景为例,它提供三个银行应用程序:Call Center、Bank Branch 和 Internet Banking。这些应用程序使用下面的 DB2 for z/OS 存储过程中封装的业务功能:
图 1 说明每个银行应用程序使用这些存储过程的方法。
Call Center 和 Bank Branch 应用程序调用存储过程 1、2 和 3,分别获取客户号、账户号和详细的账户信息。Internet Banking 应用程序只调用存储过程 2 和 3,因为客户在进行身份验证时会提供客户号。
客户端应用程序代码调用存储过程,把客户名、客户号和账户号链接起来并显示数据。存储过程类型和编程语言对于客户机是透明的。
本文中的示例使用 DB2 9 for z/OS 本机 SQL 过程访问 DB2 表中存储的银行信息。您可能会问,为什么要使用存储过程?为什么不直接使用 SQL 查询提供相同的信息?正如前面提到的,存储过程有许多好处。在这个场景中,有以下好处:
在其他场景中,由于 IT 基础结构的复杂性,可能需要使用外部 存储过程。例如,存储过程可能必须与远程后端系统通信,从 CICS 程序、IMS 数据库和事务获取信息;甚至必须通过 WebSphere® MQ 与非 IBM 平台通信。
下面详细介绍这个示例业务场景使用的存储过程的输入和输出接口。
ListCustomer 存储过程提供与客户名、客户号和生日匹配的客户的列表(见图 2)。
AccountSummary 存储过程获取给定的客户号的银行账户列表(见图 3)。
AccountDetail 存储过程获取给定的客户号的详细账户状态信息(见图 4)。
本节描述一个示例 Data Web Services 运行时环境,解释如何通过简便的鼠标操作以 Web 服务形式公开存储过程。仅仅作为 Data Web Services 公开存储过程还不足以向客户端应用程序提供在业务上下文中运行这些 Web 服务所需的逻辑。因此,本文还讨论如何使用 XSLT 样式表把部署的 AccountInquiry Data Web Service 转换为基于 HTML 的 Web 应用程序。
图 5 说明这个示例 Data Web Service (DWS) 运行时环境。它使用:
在测试 Web 服务方面,可以使用以下任何方法:
图 5. IBM Data Web Services (DWS) 运行时环境概况
图 5 所示的场景在 WebSphere Application Server 中以 J2EE 应用程序的形式部署一个名为 AccountInquiry 的 Data Web Services。对于 Web 服务调用,可以选用三个 Web 服务消费者应用程序之一:DB2 for z/OS SOAP UDFs、Data Web Service Test Client 和 Data Studio Web Services Explorer。在这个示例场景中,使用 DB2 for z/OS SOAP UDFs 作为 Web 服务客户机。
下面概述图 5 所示的 Data Web Services 运行时环境的处理流:
作为 Data Web Services 公开现有的存储过程
用 IBM Data Studio 创建 AccountInquiry Data Web Services
IBM Data Web Service 的创建和部署完全集成在 IBM Data Studio Developer 中,因此可以通过简便的鼠标操作开发 Web 服务。本节描述如何使用 Data Studio Developer 以 Web 服务形式公开现有的 DB2 for z/OS 存储过程。更详细的信息请参见 IBM Data Studio V2.1: Getting Started with Web Services on DB2 for z/iOS(见 参考资料 中的链接)。
构建 Web Application Archive (WAR) 文件
可以在 Data Studio 中执行以下操作创建 Web Application Archive 文件:
在 WebSphere Application Server for z/OS 中安装 Data Web Service
本文并不详细讨论如何使用 WebSphere Application Server Integrated Solution Console (ISC);只讨论如何安装 Data Web Services。关于 WebSphere Application Server for z/OS 配置和 Data Web Services 安装的更多信息,请参考 DB2 9 for z/OS: Deploying SOA Solutions 的 7.7 章 Setting up WebSphere Application Server(见 参考资料 中的链接)。
按以下步骤使用 Integrated Solution Console (ISC) 安装 AccountInquiry Web 服务:
成功地启动应用程序之后,AccountInquiry Data Web Service 就可以处理 Web 服务请求了。
测试 AccountInquiry Data Web Service
在 WebSphere Application Server 中实现 AccountInquiry DWS 之后,客户机应用程序就可以使用这个 Web 服务了。DB2 for z/OS 和 Data Studio Developer 提供 Web 服务客户机应用程序,可以使用它们通过 SOAP/HTTP 消费 Web 服务。
可用的客户机应用程序包括:
关于 DB2 for z/OS 和 Data Studio 提供的 Web 服务客户机应用程序的更多信息,请参考 DB2 9 for z/OS: Deploying SOA Solutions(见 参考资料 中的链接)。
这个示例场景使用 DB2 for z/OS SOAP UDFs 从 SQL 调用 AccountInquiry Web 服务操作。在使用 DB2 for z/OS SOAP UDFs 之前,需要在 DB2 for z/OS 中完成几个定制步骤。关于这些定制步骤和其他 SOAP/HTTP UDF 使用场景的详细信息,请参考 DB2 9 for z/OS: Deploying SOA Solutions 的第 8 章 “DB2 as a Web services consumer with SOAP UDFs: Scenario 3”(见 参考资料 中的链接)。
ListCustomer
图 17 给出调用 ListCustomer Data Web Service 操作的 SQL 语句。
这个 SQL 语句向 DB2 SOAP UDF 程序传递三个输入参数:SOAP 端点 (P1)、SOAP 操作 (P2) 和 SOAP 请求文档 (P3)。DB2 SOAP UDF 程序使用这些输入参数代表 SQL 客户机发出一个 SOAP/HTTP 请求。当 SOAP/HTTP 请求处理完成时,SOAP 响应文档作为 VARCHAR SQL 标量值返回给 SQL 客户机,见图 18。
把 VARCHAR 数据(图 18)存储在一个 Data Studio XML 文档中。选择 Data Project Explorer -> Data_Account_Inquiry ->XML -> XML Documents -> ListCustomer -> 右键单击 -> Source -> Format,对 SOAP XML 响应文档进行格式化(见图 19)。
如图 19 所示,ListCustomer DWS 返回了两个符合条件的客户的信息。
AccountSummary 和 AccountDetail
对 AccountSummary 和 AccountDetail DWS 操作重复刚才执行的步骤。AccountSummary 的 SQL SOAP UDF 查询见图 20。AccountDetail 的 SQL SOAP UDF 查询见图 21。
XSLT 样式表:把 DWS 转换为基于 HTML 的 Web 应用程序
在本节中,学习如何使用 XSLT 样式表把 AccountInquiry DWS 转换为基于 HTML 的 Web 浏览器应用程序,这个程序使用 HTML 超链接提供向下钻取功能。
eXtensible Style. Sheet Transformation (XSLT) 语言可以把一个 XML 文档的树转换为不同的结果树。在本文的示例场景中,AccountInquiry Data Web Service 响应是一个 XML 消息,可以使用 XSLT 把它转换为 HTML 格式。这样就可以通过 Web 浏览器直接调用 AccountInquiry Web 服务操作,接收 HTML 格式的响应。
图 22 描述一个把 AccountInquiry Web 服务部署为 J2EE 应用程序的场景。部署包含 XML-to-HTML 输出转换规则,这允许用户像一般的基于 HTML 的应用程序一样从 Web 浏览器调用 Web 服务。
处理流的主要步骤如下:
下载 中的源代码包含三个 XSLT 样式表,它们分别针对一个 AccountInquiry 操作。XSLT 使用 HTML 超链接 (href) 提供从 ListCustomer 到 AccountSummary 和从 AccountSummary 到 AccountDetail 的向下钻取功能。下面给出用于 XML-to-HTML 转换的 XSLT 样式表、要转换的 Web 服务 XML 响应文档和转换后的 HTML 文档:
现在,把每个样式表连接到相应的 Web 服务操作,见表 1。
| Web 服务操作 | 样式表文件名 |
| ListCustomer | ListCustomertoHTML.xsl |
| AccountSummary | AccountSummarytoHTML.xsl |
| AccountDetail | AccountDetailtoHTML.xsl |
为了实现上面的样式表分配,对每个 Web 服务操作执行以下步骤:
在 WebSphere Application Server 中成功地安装 AccountInquiry 应用程序之后,它将使用 XSLT 输出消息转换。Web 服务输出消息将转换为 HTML 格式。这使 Web 浏览器应用程序可以使用 REST 风格的 HTTP RPC 请求与 AccountInquiry Web 服务交互。
可以使用 REST 风格的 http URL 调用 ListCustomer Web 服务操作。URL 中的特殊字符必须采用 URL 编码形式。调用返回基于 HTML 的 Web 页面,见图 34。
在图 34 所示的浏览器窗口中,单击客户号 36505633552 即可显示这位客户的账户汇总信息(见图 35)。
在图 35 所示的浏览器窗口中,单击账户号 9000000002 即可显示这个账户的详细信息(见图 36)。
通过使用 IBM Data Web Services,只需简单的鼠标操作就能以 Web 服务的形式公开现有的 DB2 for z/OS 存储过程。这样,现有的 DB2 for z/OS 存储过程就可以成为面向服务体系结构 (SOA) 中重要的可重用资产。没有 Java 经验的后端开发人员也能够把现有的存储过程转换为 Web 服务(不需要编程)。另外,XSLT 样式表提供了新的应用程序开发方式。XSLT 输出消息转换可以把 IBM Data Web Services 转换为成熟的基于 HTML 的 Web 浏览器应用程序,不需要编写任何应用程序代码。
本系列的第 2 部分将讨论如何使用 DB2 for z/OS 用户定义函数把 z/OS 数据集和 USS 文件信息与 Data Web Services 操作集成起来。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/15082138/viewspace-621614/ ,如需转载,请注明出处,否则将追究法律责任。