WEB开发网
开发学院数据库DB2 在 DB2 for z/OS 中构建 pureXML 应用程序,第 2 ... 阅读

在 DB2 for z/OS 中构建 pureXML 应用程序,第 2 部分: 通过 Universal Services 支持 Web

 2009-12-27 00:00:00 来源:WEB开发网   
核心提示:开始之前关于本教程本教程是 本系列 的第二期,本系列讨论如何在 IBM® DB2® for z/OS® 中使用 XML,在 DB2 for z/OS 中构建 pureXML 应用程序,第 2 部分: 通过 Universal Services 支持 Web,本系列介绍创建操纵 XML 数据的简单

开始之前

关于本教程

本教程是 本系列 的第二期,本系列讨论如何在 IBM® DB2® for z/OS® 中使用 XML。本系列介绍创建操纵 XML 数据的简单应用程序的不同方式。目标是帮助您熟悉 pureXML 技术,展示开发 XML 应用程序是多么容易。可下载的示例还可以作为开发原型的起点。

本教程描述如何通过几个简易的步骤在 DB2 for z/OS 中设置 pureXML 数据的 Web 访问,并提供一个带有安装说明的下载捆绑包。

所提供的操作包括插入、更新、删除、选择和查询。查询操作将任何通过 Web 页面输入的 XPath 表达式应用到 DB2 的 XML 文档,从而为试验 XPath 提供一个环境,以及为创建更加具体的查询提供一个起点。

本教程还描述如何将 Universal Services 作为一个项目导入到 Data Studio 供以后开发使用。

本教程的内容基于 “通过 Data Web Services 使用面向 pureXML 的 Universal Services”(developerWorks,2008 年 8 月)。不过,本教程的目标是 DB2 for z/OS,而原来的文章是针对 DB2 for Linux®, UNIX®, and Windows® 的。

先决条件

为了安装和运行 Universal Services,需要具备以下软件:

DB2 9 for z/OS

z/OS 上的 JRE 1.5 或更新版本

Windows 服务器上的 JDK 1.5 或更新版本

DB2 Connect, Version 8 或更新版本

本教程使用一个类型 4 JDBC 驱动器,因此实际上不再需要安装 DB2 Connect,但其许可必须有效。

具备以下 Web 服务器之一:

IBM WebSphere® Application Server, Version 7 或更新版本

WebSphere Application Server Community Edition, Version 2.1 或更新版本

Apache Tomcat, version 5.5 或更新版本

您可以免费下载 WebSphere Application Server Community Edition 和 Tomcat。

Universal Services 的体系结构

这个小型应用程序的体系结构分为 3 层,如 图 1 所示。在后端,DB2 for z/OS 充当一个数据库服务器。在这个例子中,应用程序层是一个运行在 Windows 上的 Web 服务器。表示层或用户交互就是 Web 页面本身。

没有比较复杂的层。尽管不必理解 Web 服务的内部细节也能设置 Universal Services,但本教程还是简单地讨论它们,以让您大体理解各种元素,以及它们是如何协同工作的。

数据库层

在 DB2 中,有一个包含 3 个列的表:ID,其类型为 INT;COMMENT,其类型为 VARCHAR;以及 XMLDATA,它是一个 XML 列。这个表为应用程序存储所有 XML 数据,这些数据仅是单个 XML 文档的集合,每个 XML 文档由一个 ID 键和一个可选注释字段标识。

此外,还有一个用户自定义的函数,它以 XPath 表达式和 XML 文档作为输入,并返回将 XPath 表达式应用到 XML 文档的结果。

Web 服务器

本教程使用运行在 Windows 上(例如,您的笔记本电脑)的 WebSphere Application Server、WebSphere Application Server Community Edition 或 Tomcat 作为 Web 服务器。实际的 Web 服务是一组构建自简单的 SQL 脚本的选择、插入、更新和删除操作,同时也是一个脚本,它使用从 Web 页面获取的 XPath 表达式调用 DB2 中的用户定义函数。

单个 Web 服务操作通过 Java Servlet 来调用,Java Servlet 是和一些必要的库一起提供的。

这些文件和其他一些包含定义和不同元素之间的映射的文件一起构成了应用程序层。

表示层

用户界面是使用 XHTML 编写的,并使用 XSL 样式表格式化来自 Web 服务的两个操作的输出,即 getXMLDocumentByKey(选择操作)和 runxpathXML(查询操作)。

图 1 演示了 Universal Services 的体系结构:


图 1. Universal Services 的体系结构
在 DB2 for z/OS 中构建 pureXML 应用程序,第 2 部分: 通过 Universal Services 支持 Web

对于 WebSphere Application Server Community Edition 和 Tomcat,本教程使用了 REST 协议,它是通过 HTTP 发送 XML 的好方式。对于 WebSphere Application Server,本教程使用了 SOAP,其中消息被封装在一个包含各种元数据的 XML 信封中。

使用类型 4 JDBC 启动器从 Windows 访问 DB2 on z/OS。

应用程序层和表示层打包到一个 .war 文件中,然后部署到 Web 服务器。.war 文件是一个文档文件,包含以下内容:

包含解释 Web 服务操作的 Java Servlet 的 JAR 文件,以及 servlet 所需的一些库类

包含 Web 服务(即操作、操作的参数、协议绑定及其物理位置)定义的 WSDL 文件

包含不同组件的关系的 XML 文件:web.xml 将 URL 映射到 servlet,config.xml 将操作映射到 SQL 语句,以及其他特定于平台的 XML 文件

包含 Web 页面定义的 XHTML 文件

包含样式表以格式化来自 Web 服务的 2 个操作的结果的 XSL 文件(共 5 个操作,其他 3 个很简单,不需要使用样式表)

图 2 展示 .war 文件的文件夹结构:


图 2. .war 文件的结构
在 DB2 for z/OS 中构建 pureXML 应用程序,第 2 部分: 通过 Universal Services 支持 Web

安装 Universal Services

包含在 下载 捆绑包中的 DDL 文件在 DB2 中创建必要的对象。这个捆绑包还包含创建 .war 文件(可以部署到 Web 服务器)的脚本。

图 3 显示了下载捆绑包的内容:


图 3. Universal Services 下载捆绑包
在 DB2 for z/OS 中构建 pureXML 应用程序,第 2 部分: 通过 Universal Services 支持 Web

惟一必要的配置参数是 DB2 的位置名。不过,您还可以选择更改 DB2 对象构建器、表、列和命令行参数的名称。

惟一一个受定制影响的 .war 组件是 config.xml 文件,它保存 SQL 语句或 Web 服务提供的操作,而对于 Tomcat,受影响的是 context.xml 文件,它保存数据源定义。所有其他文件都包含在 下载 捆绑包中,并原封不动地添加到 .war 文件。

因此,安装 Universal Services 所需的步骤包括:

在 DB2 中创建表和 UDF

使用表名和连接属性配置脚本

运行脚本以生成 .war 文件

将 .war 文件部署到 Web 服务器

在 DB2 中创建对象

您需要具备一个带有以下列的表:


清单 1. DB2ADMIN.SAMPLETABLE 表的列
ID       INTEGER GENERATED ALWAYS AS IDENTITY 
COMMENT     VARCHAR(1000) 
XMLDATA     XML

只要格式正确,表和列的名都是可以更改的。此外,该表还可以包含额外的列;但它们不能被 Universal Services 引用。如果您还没有所需的表,用于生成表的 DDL 包含在 createTable.txt 文件中。

用户定义函数是用 Java 语言编写的。它以 XPath 表达式、ID、表名和列名作为输入,并返回将 XPath 表达式应用到 XML 文档(位于表中带有 ID 的行)的结果。

Java UDF 由一个 Java 加载模块和 DDL 定义组成。Java 加载模块可以安装到 DB2 目录或 Unix System Services 的 Java 目录。本教程推荐将其安装到 DB2 目录。为此,本教程提供一个小型的 Java 程序,用于调用存储过程 SQLJ.DB2_INSTALL_JAR。您还可以从 Data Studio 调用该存储过程。

要安装 UDF,请执行下列任务:

根据以下信息修改提供的 Java 程序 uploadJar.java:

DB2 子系统的 <hostname>、<port no> 和 <location name>。这是连接到 DB2 子系统时所需的常见连接信息。

具有特权将 JAR 安装到 DB2 目录的用户的 <userid> 和 <password>。

当 Universal Services 没有安装在 C: 驱动器的根目录时的 JAR 文件路径。

编译并运行该程序:

在 Windows 中打开一个命令行。

导航到 UniversalServicesZ 目录。

输入命令 javac uploadJar.java 执行编译。

输入命令 java uploadJar 运行程序。

创建用户定义函数 DB2ADMIN.XPATHXML:

修改 XPathDDL.txt。您必须为用于 Java 例程的 WLM 环境提供其名称。在提供的 DDL 中,其值为 DSN9WLMJ。

在 XPathDDL.txt 中运行 DDL,例如在 SPUFI 中。

配置和生成 .war 文件

您将通过为 zOS.bat 配置的脚本执行配置和生成。您可以通过以下项的值调用 Java 程序执行配置:

表创建器、表名和列名(它们在 SQL 脚本中用于插入、更新、删除、选择和查询)

DB2 位置名(当使用的 Web 服务器为 Tomcat 时用于定义一个连接)

Java 程序生成文件 config.xml 和 context.xml。

然后,通过将这些文件与其他提供的文件打包起来组成一个 Web 归档。最后得到 UniversalServices.war 文件。

部署到 Web 服务器

实际所需的部署步骤与 Web 服务器的种类有关。但是在每种情况中,您都需要:

配置数据源(即连接到存储数据的 DB2 子系统)

将 UniversalServices.war 部署到 Web 服务器的运行时环境

表 1 归纳了配置数据源所需的信息 —— 不管使用什么 Web 服务器。要通过 DB2 Connect 或类型 4 JDBC 驱动器远程连接到 DB2 必须使用该信息。

为了便于演示,我们对 <db2 name> 使用值 DSN9、<host name> 使用 9.123.45.678、<port no> 使用 446 以及 <userid> 使用 db2admin(这些值都是不存在的)。在您的系统中需要使用自己的值。


表 1. 数据源定义信息

元素说明
<db2 name>DB2 子系统的位置名
<host name>z/OS 系统的名称(可能是一个逻辑名或一个 IP 地址)
<port no>DB2 子系统的端口号
<username>连接的用户 ID
<pwd>针对该连接的用户 ID 的密码

下一小节详细描述如何部署到每个 Web 服务器上。

部署到 Web 服务器

这一小节描述部署到 Universal Services 支持的 3 个 Web 服务器所需的步骤:WebSphere Application Server、WebSphere Application Server Community Edition 和 Tomcat。本教程没有介绍实际的安装过程,而是假设软件已经安装完成。WebSphere Application Server Community Edition 和 Tomcat 都可以免费下载。

部署到 WebSphere Application Server

下面我们介绍将 Universal Services 应用程序部署到 WebSphere Application Server 所需的 3 个步骤:

配置 JDBC 提供者

定义数据源(即 DB2 子系统)

部署 .war 文件

您将通过从 Web 浏览器运行的管理控制台执行这 3 个步骤。图 4 显示了 WebSphere Application Server 管理控制台的完整屏幕截图,但随后的屏幕截图仅显示实际操作时的控制台。

使用在安装时提供的用户名和密码登录:

图 4. WebSphere Application Server 管理控制台
在 DB2 for z/OS 中构建 pureXML 应用程序,第 2 部分: 通过 Universal Services 支持 Web

从左边的菜单选择 Resources > JDBC > JDBC Providers:

图 5. JDBC Providers
在 DB2 for z/OS 中构建 pureXML 应用程序,第 2 部分: 通过 Universal Services 支持 Web

单击 New:

图 6. 创建新的 JDBC 提供者
在 DB2 for z/OS 中构建 pureXML 应用程序,第 2 部分: 通过 Universal Services 支持 Web

为 Database type 选择 DB2,Provider type 选择 DB2 Universal Driver Provider,Implementation type 选择 XA data source,然后单击 Next:

图 7. 创建 JDBC 提供者,步骤 1
在 DB2 for z/OS 中构建 pureXML 应用程序,第 2 部分: 通过 Universal Services 支持 Web

输入包含 JDBC 驱动器和 DB2 Connect 许可的 jar 文件的位置。对于标准的安装,其位置是 C:\Program Files\IBM\SQLLIB\java。然后单击 Next:

图 8. 创建 JDBC 提供者,步骤 2
在 DB2 for z/OS 中构建 pureXML 应用程序,第 2 部分: 通过 Universal Services 支持 Web

现在您得到一个带有定义的摘要页面。单击 Finish:

图 9. 创建 JDBC 提供者,步骤 3
在 DB2 for z/OS 中构建 pureXML 应用程序,第 2 部分: 通过 Universal Services 支持 Web

最后,单击 Save 将更改保存到主配置:

图 10. 创建 JDBC 提供者,步骤 4
在 DB2 for z/OS 中构建 pureXML 应用程序,第 2 部分: 通过 Universal Services 支持 Web

现在,新的 JDBC 提供者已经可以使用:


图 11. 新的 JDBC 提供者创建完成
在 DB2 for z/OS 中构建 pureXML 应用程序,第 2 部分: 通过 Universal Services 支持 Web

第二项任务是配置数据源:

从左边的菜单选择 Resources > JDBC > Data Sources,然后单击 New:

图 12. 创建新的数据源
在 DB2 for z/OS 中构建 pureXML 应用程序,第 2 部分: 通过 Universal Services 支持 Web

单击 Create a new J2C authentication alias(这是用于连接到 DB2 子系统的用户定义):

图 13. 创建 J2C 身份验证别名,步骤 1
在 DB2 for z/OS 中构建 pureXML 应用程序,第 2 部分: 通过 Universal Services 支持 Web

单击 New:

图 14. 创建 J2C 身份验证别名,步骤 2
在 DB2 for z/OS 中构建 pureXML 应用程序,第 2 部分: 通过 Universal Services 支持 Web

输入别名的名称(例如,“UnivServUser”)、用户 ID 和用于连接到 DB2 的帐户的密码,然后单击 OK:

图 15. 创建 J2C 身份验证别名,步骤 3
在 DB2 for z/OS 中构建 pureXML 应用程序,第 2 部分: 通过 Universal Services 支持 Web

单击 Save directly to the master configuration:

图 16. 创建 J2C 身份验证别名,步骤 4
在 DB2 for z/OS 中构建 pureXML 应用程序,第 2 部分: 通过 Universal Services 支持 Web

现在,您必须配置数据源:

选择 Resources > JDBC > Data Sources,然后单击 New:

图 17. 创建数据源,步骤 1
在 DB2 for z/OS 中构建 pureXML 应用程序,第 2 部分: 通过 Universal Services 支持 Web

在 data source name 字段输入 Universal Services,在 JNDI name 字段输入 jdbc/<location name>(填入适当的值),然后从下拉列表选择 UnivServUser 并单击 Next:

图 18. 创建数据源,步骤 2
在 DB2 for z/OS 中构建 pureXML 应用程序,第 2 部分: 通过 Universal Services 支持 Web

选择 Select an existing JDBC provider,并从下拉列表选择 DB2 Universal Driver Provider XA,然后单击 Next:

图 19. 创建数据源,步骤 3
在 DB2 for z/OS 中构建 pureXML 应用程序,第 2 部分: 通过 Universal Services 支持 Web

在 DB2 子系统的 “Database name”、“Server name” 和 “Port number” 字段中输入您自己的值,然后单击 Next:

图 20. 创建数据源,步骤 4
在 DB2 for z/OS 中构建 pureXML 应用程序,第 2 部分: 通过 Universal Services 支持 Web

在摘要页面单击 Finish,然后单击 Save directly to master configuration:

图 21. 创建数据源,步骤 5
在 DB2 for z/OS 中构建 pureXML 应用程序,第 2 部分: 通过 Universal Services 支持 Web

现在,清单中已经出现 Universal Services 数据源。为了测试连接,请选择数据源旁边的复选框,然后单击 Test connection 按钮:

图 22. 创建数据源,步骤 6
在 DB2 for z/OS 中构建 pureXML 应用程序,第 2 部分: 通过 Universal Services 支持 Web

下面弹出的消息表明测试成功:



图 23. 创建数据源,步骤 7
在 DB2 for z/OS 中构建 pureXML 应用程序,第 2 部分: 通过 Universal Services 支持 Web

现在,可以部署 .war 文件了。

从左边的菜单选择 Application > Install New Applications。

填入到 .war 文件的路径,或使用浏览功能查找它。

在 “Context root” 字段输入 UniversalServices(不要空格),然后单击 Next:

图 24. 部署 WAR 文件,步骤 1
在 DB2 for z/OS 中构建 pureXML 应用程序,第 2 部分: 通过 Universal Services 支持 Web

使用默认值,并向下滚动到底部,然后单击 Next:

图 25. 部署 WAR 文件,步骤 2
在 DB2 for z/OS 中构建 pureXML 应用程序,第 2 部分: 通过 Universal Services 支持 Web

使用默认值,然后单击 Next:

图 26. 部署 WAR 文件,步骤 3
在 DB2 for z/OS 中构建 pureXML 应用程序,第 2 部分: 通过 Universal Services 支持 Web

滚动到页面的底部并选择 Universal Services 复选框。

通过单击 browse 按钮选择一个 Target Resource JNDI 名,并选择前面配置的数据源 —— 名为 “jdbc/<location name>” —— 然后单击 Next:

图 27. 部署 WAR 文件,步骤 4
在 DB2 for z/OS 中构建 pureXML 应用程序,第 2 部分: 通过 Universal Services 支持 Web

单击 Next:

图 28. 部署 WAR 文件,步骤 5
在 DB2 for z/OS 中构建 pureXML 应用程序,第 2 部分: 通过 Universal Services 支持 Web

在摘要屏幕单击 Finish,在下一个屏幕截图滚动到底部,然后单击 Save directly to the master configuration:

图 29. 部署 WAR 文件,步骤 6
在 DB2 for z/OS 中构建 pureXML 应用程序,第 2 部分: 通过 Universal Services 支持 Web

最后,在左边的菜单上单击 Applications > Enterprise Applications。

现在,您已经安装了一些应用程序。Universal Services 标记为停止。要启动它,选择 Universal Services 旁边的复选框并单击 Start 按钮:

图 30. 部署 WAR 文件,步骤 7
在 DB2 for z/OS 中构建 pureXML 应用程序,第 2 部分: 通过 Universal Services 支持 Web

您将收到一个消息,表明应用程序已经成功启动,然后您可以进行测试了。

部署到 WebSphere Application Server Community Edition

下面我们介绍将 Universal Services 应用程序部署到 WebSphere Application Server Community Edition 所需的 3 个步骤:

使 DB2 Connect 许可成为可用资源

定义数据源(即 DB2 子系统)

部署 .war 文件

您将通过从 Web 浏览器运行的管理控制台执行这 3 个步骤。图 31 显示了管理控制台的完整屏幕截图,但随后的屏幕截图仅显示实际操作时的控制台。

使用在安装时提供的用户名和密码登录:

图 31. WebSphere Application Server Community Edition 管理控制台
在 DB2 for z/OS 中构建 pureXML 应用程序,第 2 部分: 通过 Universal Services 支持 Web

从左边菜单选择 Services > Repository:

图 32. 将 DB2 Connect 许可添加到存储库,步骤 1
在 DB2 for z/OS 中构建 pureXML 应用程序,第 2 部分: 通过 Universal Services 支持 Web

输入 DB2 Connect 许可的位置,或通过浏览查找它。它通常位于 C:\Program Files\IBM\SQLLIB\java。jar 文件的文件名为 db2jcc_license_cisuz.jar。

根据以下描述填充 Group、Artifact、Version 和 Type 字段(如图 33 所示),然后单击 Install:

Group: com.ibm.db2

Artifact: db2jcc_license_cisuz

Version: 9.1

Type: jar



图 33. 将 DB2 Connect 许可添加到存储库,步骤 2
在 DB2 for z/OS 中构建 pureXML 应用程序,第 2 部分: 通过 Universal Services 支持 Web

添加了许可之后,现在可以配置数据源了。从左边选择 Services > Database Pools 以进入 Database Pools 窗口。

选择 Using the Geronimo database pool wizard:

图 34. 创建数据库池,步骤 1
在 DB2 for z/OS 中构建 pureXML 应用程序,第 2 部分: 通过 Universal Services 支持 Web

输入 jdbc/UniversalServices 作为数据库池的名称,并选择 DB2 XA 作为数据库类型,然后单击 Next:

图 35. 创建数据库池,步骤 2
在 DB2 for z/OS 中构建 pureXML 应用程序,第 2 部分: 通过 Universal Services 支持 Web

填充连接信息。您需要选择驱动器和许可 jar 文件,然后在 Port Number、User Name、Server Name、Password 和 Database Name 中输入自己的值。其他地方使用默认值。

图 36. 创建数据库池,步骤 3
在 DB2 for z/OS 中构建 pureXML 应用程序,第 2 部分: 通过 Universal Services 支持 Web

滚动到底部,并单击 Deploy。

现在,您可以在列表中看到一个数据库池:



图 37. 创建数据库池,步骤 4
在 DB2 for z/OS 中构建 pureXML 应用程序,第 2 部分: 通过 Universal Services 支持 Web

为了测试连接,请向下滚动到 “Run SQL”。

从下拉列表选择数据库池 jdbc/UniversalServices,输入一个 SQL 语句,然后单击 Run SQL 按钮。查询的结果返回到页面的底部:

图 38. 测试数据库池
在 DB2 for z/OS 中构建 pureXML 应用程序,第 2 部分: 通过 Universal Services 支持 Web

现在,您可以部署 .war 文件了。

从左边菜单的 Application 区域选择 Deploy New:

图 39. 部署 WAR 文件,步骤 1
在 DB2 for z/OS 中构建 pureXML 应用程序,第 2 部分: 通过 Universal Services 支持 Web

输入 .war 文件的位置,或通过浏览功能查找它。其位置为 Universal Services/war/wasce。

单击 Install。

图 40. 部署 WAR 文件,步骤 2
在 DB2 for z/OS 中构建 pureXML 应用程序,第 2 部分: 通过 Universal Services 支持 Web

当收到表明 .war 文件已经安装的消息之后,您就可以开始测试了:


图 41. 部署 WAR 文件,步骤 3
在 DB2 for z/OS 中构建 pureXML 应用程序,第 2 部分: 通过 Universal Services 支持 Web

部署到 Apache Tomcat

下面我们介绍将 Universal Services 应用程序部署到 Apache Tomcat 所需的 3 个步骤:

为 DB2 Connect 安装 JDBC 驱动器和许可

定义数据源(即 DB2 子系统)

部署 .war 文件

为了安装 JDBC 驱动器和许可,您需要将 db2jcc.jar 和 db2jcc_license_cisuz.jar 文件复制到 Tomcat 安装的 lib 目录。对于标准的 DB2 Connect 安装,可以在 C:\Program Files\IBM\SQLLIB\Java 找到这些文件。lib 目录的位置因不同的 Tomcat 版本而异。对于 Version 5.5,lib 目录位于 \Tomcat 5.5\common\,而在 Version 6 中,它则位于 Tomcat 根目录下。


图 42. Tomcat 5.5 的目录
在 DB2 for z/OS 中构建 pureXML 应用程序,第 2 部分: 通过 Universal Services 支持 Web

您可以通过手动地编辑 server.xml 文件轻松地配置数据源,该文件位于 Tomcat 根目录的 conf 目录下。

将以下条目(清单 2)添加到该文件。该条目应该位于 <GlobalNamingResources> 内部。


清单 2. server.xml 中的连接条目
<Resource name="jdbc/DSN9" 
 type="javax.sql.DataSource" 
  url="jdbc:db2://9.123.45.678:446/DSN9" 
  driverClassName="com.ibm.db2.jcc.DB2Driver" 
  password="*******" 
  maxActive="4" 
  maxWait="5000" 
  maxIdle="2" 
  username="db2admin"/>

注意:在清单 2 中,“DSN9” 是位置名,“9.123.45.678” 是主机名,“446” 是端口号,“db2admin” 是用户 ID,而 “*******” 是 DB2 连接的密码。对于这些参数,您必须提供自己的值。

部署 .war 文件:

启动 Tomcat 并打开 Tomcat Manager。一般将浏览器指向 http://localhost:8080/manager/html 便可以完成此操作,但具体情况取决于 Tomcat 服务器的端口号。图 43 显示了 Tomcat manager 的完整屏幕截图,但随后的屏幕截图仅显示实际使用时的控制台(注意,本教程使用的端口号为 8888)。使用安装时提供的用户名和密码登录。

图 43. Apache Tomcat Manager 开始页面
在 DB2 for z/OS 中构建 pureXML 应用程序,第 2 部分: 通过 Universal Services 支持 Web

向下滚动到页面底部的 “Select WAR file to upload” 字段。

输入到 .war 文件的路径,或通过浏览查找它,然后单击 Deploy 按钮:

图 44. 部署 .war 文件
在 DB2 for z/OS 中构建 pureXML 应用程序,第 2 部分: 通过 Universal Services 支持 Web

现在,“Universal Services” 出现在 “Applications” 下面:


图 45. Universal Services 已添加到 Applications
在 DB2 for z/OS 中构建 pureXML 应用程序,第 2 部分: 通过 Universal Services 支持 Web

该应用程序成功启动,您可以开始测试了。

测试 Universal Services

通过提供的测试页面访问 Web 服务。

测试页面的 URL 为 http://localhost:8080/UniversalServices/testServices.html,它取决于 Web 服务器的端口号。

图 46 显示了测试页面(注意,这里使用的端口号为 8888):


图 46. Universal Services 测试页面
在 DB2 for z/OS 中构建 pureXML 应用程序,第 2 部分: 通过 Universal Services 支持 Web

getPrimaryKeys 操作返回一个包含表中的所有行 ID 的列表。这些 ID 还可用于所提供的其他操作,比如 delete、update 或 query。

如何使用 query 操作

query 操作可以与 XPath 表达式一起使用,或者用作创建自己专用的 XPath 表达式的起点。在文本框中输入一个原生 XPath 表达式(即没有任何特定于 DB2 的关键字)。然后该操作就会用所需的 DB2 语法打包它,完成后发送给 DB2 进行处理。这样能够更轻松地关注实际的 XPath 表达式。

Universal Services 可以和任何 XML 模式一起使用。因此本教程仅提供一些比较有特色的例子。其中一个例子是 ‘.’,它仅返回上下文节点;即整个 XML 文档。另一个例子是 ‘//text()’,它打印文档中的所有文本值。

清单 3 显示了一个针对 UBL 2.0 Invoice 文档的 XPath 表达式,它仅选择整个发票:


清单 3. XPath 表达式 UBL 2.0 Invoice
declare default element namespace 
 "urn:oasis:names:specification:ubl:schema:xsd:Invoice-2"; 
 /Invoice

行业包

如果您对特定的 XML 格式感兴趣,或者仅需要一些用于测试的仿真数据,那么可以查看可以下载的行业包.

有针对许多不同的 XML 格式的行业包,比如 UNIFI、UBL 2.0 和 IRS1120 等。

这些包包含与本教程使用的 Universal Services 表匹配的 DDL。它们还包含记录 XML 格式和一些样例 XML 文档的 XML 模式。它们可以和 Universal Services 一起用于测试应用程序。

开发 Universal Services

如果您想修改 Universal Services,那么最简易的方法就是使用 IBM Data Studio Developer。您可能希望添加额外的参数或创建其他操作,比如专用的 XPath 查询。本教程 下载 部分提供一个 zip 文件,它包含可以导入到 Data Studio 进行修改的 Web 服务。

IBM Data Studio Developer 是基于 Eclipse 的集成开发环境,用于创建和测试数据库应用程序。它提供许多可以免费下载的功能,包括数据 Web 服务。

这个小节详细介绍如何导入和配置 Data Studio 项目。

将 Universal Services 项目导入到 Data Studio

本教程假设已经安装 Data Studio,并且使用数据透视图启动它。

右键单击 Data Project Explorer 的空白处,然后选择 Import:

图 47. 将项目导入到 Data Studio,步骤 1
在 DB2 for z/OS 中构建 pureXML 应用程序,第 2 部分: 通过 Universal Services 支持 Web

选择 Existing Projects into Workspace,然后单击 Next:

图 48. 将项目导入到 Data Studio,步骤 2
在 DB2 for z/OS 中构建 pureXML 应用程序,第 2 部分: 通过 Universal Services 支持 Web

输入文件的目标位置,或通过浏览查找它,然后单击 Finish:

图 49. 将项目导入到 Data Studio,步骤 3
在 DB2 for z/OS 中构建 pureXML 应用程序,第 2 部分: 通过 Universal Services 支持 Web

导入的项目将出现在 Data Project Explorer 中。单击该项目,程序将询问您是否需要编辑连接配置文件。单击 Edit now:

图 50. 配置数据库连接,步骤 1
在 DB2 for z/OS 中构建 pureXML 应用程序,第 2 部分: 通过 Universal Services 支持 Web

然后,您将看到一个可以选择的连接列表。选择 Universal Services Database Connection1 并单击 edit:

图 51. 配置数据库连接,步骤 2
在 DB2 for z/OS 中构建 pureXML 应用程序,第 2 部分: 通过 Universal Services 支持 Web

在 “Properties for Universal Database Connection1” 窗口中,从左边的菜单选择 Driver Properties:

图 52. 配置数据库连接,步骤 3
在 DB2 for z/OS 中构建 pureXML 应用程序,第 2 部分: 通过 Universal Services 支持 Web

在 Database(DB2 位置名)、Host、Port number、User name 和 Password 字段中输入您的值,然后单击 Test Connection:

图 53. 配置数据库连接,步骤 4
在 DB2 for z/OS 中构建 pureXML 应用程序,第 2 部分: 通过 Universal Services 支持 Web

在收到的消息上单击 OK。

在 “Universal Services Database Connection1 Properties” 窗口中单击 OK。

在 Connection 窗口中单击 Finish。

展开项目文件夹,您将在 “Data Project Explorer” 中看到以下内容:一个文件夹结构,其主文件夹为 SQL Scripts、Stored Procedures、User-Defined Functions、Web Services 和 XML。Web Services 文件夹包含一个名为 Universal Services 的子文件夹,它包含您需要修改的服务。XML 文件集包含的子文件夹为 WSDL、XML Documents、XML Schema 和 XSLT。

图 54. Universal Services 项目内容
在 DB2 for z/OS 中构建 pureXML 应用程序,第 2 部分: 通过 Universal Services 支持 Web

至此,您可以开始修改 Web 服务了。您可能希望修改现有的操作之一,例如,向 Web 服务添加参数或操作。

当您进行了修改(甚至不做任何改动)之后,就可以部署 Web 服务了。

右键单击 Web 服务文件夹,然后选择 Build and Deploy:

图 55. 部署 Web 服务,步骤 1
在 DB2 for z/OS 中构建 pureXML 应用程序,第 2 部分: 通过 Universal Services 支持 Web

在 “Deploy Web Service” 窗口中,从下拉列表选择需要使用的 Web 服务器。

选择是部署到 Web 服务器还是仅构建 .war 文件。在这里仅构建 .war 文件,因为其他操作需要在 Data Studio 中配置 Web 服务器。

确保位置名正确,然后单击 Finish:

图 56. 部署 Web 服务,步骤 2
在 DB2 for z/OS 中构建 pureXML 应用程序,第 2 部分: 通过 Universal Services 支持 Web

Workspace 日志中的一条消息显示 Web 服务和目标 .war 文件已经部署:


图 57. 部署 Web 服务,步骤 3
在 DB2 for z/OS 中构建 pureXML 应用程序,第 2 部分: 通过 Universal Services 支持 Web

最后,您必须将 .war 文件部署到所选的 Web 服务器。

在 Universal Services 捆绑包中,一个 XHTML 文档定义了一个完整的 Web 页面,从而为调用 Web 服务操作提供一个用户界面。当通过 Data Studio 修改操作时,这个 XHTML 文档可能不再适用,但可以根据更改手动更新它。

XHTML 文档包含收集参数并向 Web 服务器生成 HTTP POST 请求的表单。例如,清单 4 是针对 getXMLDocumentByKey 操作的表单:


清单 4. 调用 getXMLDocumentByKey 操作的 XHTML
<form name="testServices_getXMLDocumentByKey"  
   action="rest/UniversalServices/getXMLDocumentByKey"  
   method="post"> 
 <tr class="row-dark" > 
  <td>getXMLDocumentByKey</td> 
  <td align="right">ID:</td> 
  <td align="center"> 
    <input type="text" name="p1" size="40" /> 
  </td> 
  <td align="center"> 
   <input type="submit" value="Invoke" /> 
  </td> 
 </tr> 
</form>

您可以看到,操作名是动作 URL 的一部分,并且单个参数的表单字段为 named p1(p2,p3 等,后续参数依此类推)。

此外,还可以选择通过 HTTP GET 方法调用 Web 服务的单个操作。清单 5 显示了所提供的每个操作的示例 URL。注意,参数作为 p1,p2 等传递,并且使用 & 符号分隔。


清单 5. Universal Services 的 GET 方法的 URL
http://localhost:8888/servicesUniversalServices/rest/UniversalServices/getPrimaryKeys? 
 
http://localhost:8888/servicesUniversalServices/rest/UniversalServices 
  /getXMLDocumentByKey?p1=1 
 
http://localhost:8888/servicesUniversalServices/rest/UniversalServices/deleteDocument?p1=3 
 
http://localhost:8888/servicesUniversalServices/rest/UniversalServices 
  /update?p1=<document4>updated document</document4>&p2=4 
 
http://localhost:8888/servicesUniversalServices/rest/UniversalServices 
  /insertXML?p1=A comment&p2=<document5>new doc</document5> 
 
http://localhost:8888/servicesUniversalServices/rest/UniversalServices 
  /runxpathXML?p1=.&p2=2

结束语

本教程演示如何设置 Universal Services 以访问 DB2 z/OS 上的 pureXML 数据,以更快捷地构建包含 pureXML 的应用程序原型。

下载

描述名字大小下载方法
面向 z/OS 的通用服务UniversalServices.zip2781KBHTTP

Tags:DB for OS

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接