构建 pureXML 和 JSON 应用程序,第 2 部分: 为公开 JSON 的 pureXML 创建 Universal Services

在 JSONx 储存上配置、部署和测试 JSON Universal Services

pureXML® Universal Services for JSON(在本文中简称为 JSON Universal Services)是一组公开为 Web 服务的数据库操作,包括插入、更新、删除和查询。这些服务使应用程序能够用 pureXML 持久化 JSON,并通过 HTTP 使用 WebSphere® Application Server 方便地查询它。在本文中开始配置和测试 JSON Universal Services。

Faton (Tony) Avdiu, 合作 DB2 技术支持专家, IBM  

Faton (Tony) Avdiu 的照片Faton (Tony) Avdiu 是一位 DB2 pureXML 支持专家(合作),他在大学主修的专业是计算机工程。Tony 正在 Pace University 大学攻读信息系统硕士学位。他目前为 IBM 工作,研究 DB2 中的 XML 储存技术。



Susan Malaika, 高级技术人员, IBM

Susan Malaika 的照片Susan Malaika 是 IBM Information Management Group(属于 IBM Software Group)的一名高级技术人员。她的专长包括 XML、Web 和数据库。她曾在 Global Grid Forum 开发过支持网格环境数据的标准。她与人合作出版了关于 Web 的专著,发表了关于事务处理和 XML 的文章。她是 IBM Academy of Technology 的成员。



Michael Schenker, 软件工程师, IBM  

Michael SchenkerMichael Schenker 是加州 San Jose 的 IBM Silicon Valley Laboratory 的软件工程师。他于 2002 年加入 IBM,从事 IBM Data Server Tooling 领域。他专长的领域是在 IBM 数据服务器上启用 Web 服务。他从德国 Leipzig 的 University of Applied Sciences 获得了计算机科学硕士学位。



2009 年 12 月 14 日

简介

本文是共包含 3 部分的系列文章的第二部分,该系列介绍如何构建一个使用 JavaScript 或 OpenSocial 小部件的三层应用程序。通过遵循本文的步骤,您将通过 JSON Universal Services 公开在本系列的第一部分中描述的 JSON 数据。

JSONx 是 JSON 的规范无损 XML 表示,它使支持 XML 的设备和软件可以操作 JSON。在本系列的第一篇文章中,我们介绍了 JSONx,并演示了如何在 pureXML 数据库中储存 JSONx。pureXML 支持通过 SQL/XML、XQuery 和 XPath 等语言储存、索引和查询 XML。

Universal Services for pureXML 是一组简单但固定的数据库操作,它允许查询和修改储存在 DB2® 数据库中的 pureXML 列中的 XML。这些数据库操作(包括插入、更新和查询)被公开为 Web 服务,以 XML 格式将数据返回给客户端。完成一些直观的配置和部署步骤之后就可以使用 Universal Services。要获得更多关于 Universal Services 的信息,请查看 developerWorks 文章 “Universal Services for pureXML using Data Web Services”(在 参考资料 部分提供一个相关的链接)。

常用缩略词

  • HTML: 超文本标记语言
  • HTTP:超文本传输协议
  • JSON:JavaScript 对象标记法
  • SOA:面向服务架构
  • URL:统一资源定位符
  • WAR:Web 归档文件
  • XML:可扩展标记语言

JSON Universal Services 与 Universal Services 类似,但它操作的是储存在 pureXML 列中的 JSONx 数据。数据库操作(包括插入、更新和查询)以 JSON 格式将数据返回给客户端,而不是前面所述的 XML 格式。

JSON Universal Services 确保 JavaScript 等客户端应用程序不知道使用 XML 储存来持久化 JSON。DB2 本机 XML 功能可以和持久化 JSON 对象一起使用,从而实现使用声明性语言(比如 XPath)查看、查询和操作数据,这将显著缩短开发时间。

在本文中,我们讨论在基于 DB2 样例数据库的 JSONx 储存上配置、部署和测试 JSON Universal Services,该样例数据库在本系列第 1 部分 “构建 pureXML 和 JSON 应用程序,第 1 部分:使用 DB2 pureXML 储存和查询 JSON” 中进行了描述(在 参考资料 部分提供相关的链接)。

先决条件

在安装 JSON Universal Services 之前,您需要完成在本系列第 1 部分中描述的安装。运行将要创建数据库的 JSONx 包,并在 DB2 中注册必要的 Java™ 用户定义函数(UDF)。这些 UDF 支持在 JSON 和 JSONx 之间的相互转换。您还需要安装有 DB2 9.5 或 9.7、Java Runtime Environment 1.5.0 和一个 Web 服务器(比如 WebSphere Application Server V6.x 或 Apache Tomcat V6.x)。注意,Java Runtime 是 DB2 安装的一部分。如果您还没有安装这些产品,请阅读第一篇文章。要获得该文章的链接,请查看 参考资料 部分。

在本系列的第一篇文章中,您创建了一个 CUSTOMER,您将使用它安装和测试 JSON Universal Services。表 1 显示了 CUSTOMER 表:

表 1. JSONXMLADMIN.CUSTOMER 表
列名数据类型描述
CID INTEGER 客户 ID
INFOXML 包含关于客户的信息的记录
COMMENTVARCHAR(256)关于客户的小文本标识符

在安装了所需的软件并创建了表之后,您就可以为特定的 pureXML 列配置和安装 JSON Universal Services。


安装 JSON Universal Services

这个小节假设您下载了 JSON Universal Services 包并将其解压缩到一个本地的临时目录中。在本文中对 JSON Universal Services 使用的目录为 C:\temp\JSONUniversalServices。您应该看到如 图 1 所示的目录和文件。

图 1. JSON Universal Services 下载包的内容
解压缩后的 JSON Universal Services 包中的目录和文件

目录包括 classes、services 和 war。文件包括 configure.bat、configure.sh 和 README.pdf。

当您的系统具备了必要的文件和脚本之后,您可以继续安装 JSON Universal Services,这主要包括 3 个步骤:

  • 根据本地系统设置配置 JSON Universal Services。
  • 将 JSON Universal Services 部署到应用服务器。
  • 测试 JSON Universal Services。

配置 JSON Universal Services

通过下载文件 configure.bat(Linux® 用户:configure.sh)提供的脚本完成 Web 服务配置。修改这个脚本以和 JSONx 包一起使用。因此,如果您修改 JSONx 包,或决定使用不同的包,则需要在执行它之前修改 configure.bat 脚本。您可能需要根据本地系统设置调整一些参数。表 2 显示了在该配置脚本中使用的参数。

表 2. 在配置脚本中使用的参数
参数名描述值(以样例数据库为依据)
DB2INSTALLDIRDB2 安装的目录的路径。 C:\Program Files\IBM\SQLLIB
DBSCHEMA包含 XML 列所属的数据库模式的名称。JSONXMLADMIN
DBNAME Universal Services 使用的数据库的名称。JSONSMPL
DBTABLE包含 XML 列的表的名称。CUSTOMER
DBPRIMARY 在 DBTABLE 中指定的主列的名称。这个列的类型可以是 INTEGER 或 VARCHAR。 CID
DBCOMMENT 在 DBTABLE 中指定的表的注释列的名称。COMMENT
DBXML 在 DBTABLE 中指定的表的 XML 列的名称。这是包含 XML 数据的列。INFO

注意,表 2 的 DBPRIMARY、DBCOMMENT 和 DBXML 这 3 个参数的值与 表 1 中的列名相同。

图 2 显示了根据 表 2 提供的值编辑后的配置文件(查看 文本格式的图 2)。

图 2. 编辑配置文件 configure.bat
编辑后的配置文件 configure.bat

使用恰当的参数修改 configure.bat(Linux 用户:configure.sh)之后,它现在可以执行完成 JSON Universal Services 配置的脚本。这个脚本创建一个 Web 应用程序归档(WAR)文件,它包含 JSON Universal Services Web 应用程序需要的所有文件,并且可以部署到应用服务器。记住,该脚本必须在 DB2 命令行处理器上执行;否则,执行将失败。

部署 JSON Universal Services

如前一个小节所述,编辑和执行 configure.bat 脚本将创建一个可以部署到应用服务器的 WAR 文件。在将 WAR 文件部署到应用服务器之前,必须在应用服务器上配置一个数据源,它允许 Universal Services 访问 DB2 数据库。

要设置数据源,请遵循应用服务器的标准配置流程。在设置期间唯一需要考虑的需求是数据源的名称,它必须遵循以下格式:jdbc/数据库名。本文的例子中使用的数据源名称为 jdbc/jsonsmpl。如果需要其他关于如何设置数据源的信息,请参考应用服务器文档。

第二个步骤是将实际的 WAR 文件部署到应用服务器。不过,由于 WebSphere Application Server V6.x 和 Apache Tomcat V6.x 所需的 Web 服务工件不同,配置脚本将分别为每个应用服务器创建两个独立的 WAR 文件。

可以在位于 SON Universal Services 的当前目录 C:\temp\JSONUniversalServices 的子目录 war 中找到 WAR 文件。尤其是,该目录包含两个子目录 tomcat 和 was。tomcat 目录包含需要安装到 Apache Tomcat V6.x 的 WAR 文件,而 was 目录包含需要安装到 WebSphere Application Server V6.x 的 WAR 文件。要将 WAR 文件安装到您的应用服务器,请遵循标准的流程。如果需要更多信息,请参考应用服务器文档。

现在可以使用 JSON Universal Services 测试页面测试您的 Web 服务,该页面在 WAR 文件部署完成时就可用。


测试 JSON Universal Services

要确保已成功在本地系统上建立并配置了 JSON Universal Services,则需要测试它们。测试这些服务的最简单方法是使用简单的 HTML 页面,该页面是 JSON Universal Services 部署的一部分,已经在应用服务器上可用。

要访问 JSON Universal Services 测试页面,请将浏览器重定向到 URL http://localhost:8080/JSONUniversalServices/testServices.html。注意,如果您将它安装在 Apache Tomcat 上,将使用端口 8080。如果您使用的是 WebSphere Application Server,则必须使用端口 9080 访问该页面。注意,您可能需要根据本地系统调整主机名或端口。现在,您应该看到 图 3 中的页面。

图 3. JSON Universal Services 测试页面
JSON Universal Services 测试页面

这个简单的测试页面允许您插入、更新、删除和查询以 JSONx 的形式储存在数据库中的 JSON 数据。通过测试页面提供的按钮来调用 Web 服务。图 4 显示了我们通过页面上的按钮调用 getPrimaryKeys 操作之后的 Web 服务响应。

图 4. 调用 Web 服务操作 getPrimaryKeys 之后的响应
JSON Universal Services 测试页面

JSON 文档被转换成 XML 文档插入到列中。您可以以 JSON 或 XML 格式获取这些文档。

例如,通过调用 getJSONDocumentByKey 方法,您将获得该文档的 JSON 表示:

清单 1. 客户 Kathy Smith 的 JSON 格式的信息
{
  "customerinfo" : {
    "cid" : 1000 ,
    "name" : "Kathy Smith" ,
    "addr" : {
      "country"    : "Canada" ,
      "street"     : "5 Rosewood" ,
      "city"       : "Toronto" ,
      "prov-state" : "Ontario" ,
      "pcode-zip"  : "M6W 1E6"
    } ,
    "phone" : {
      "work" : "416-555-1358"
    }
  }
}

如果您选择调用 getXMLDocumentByKey 方法,将从 DB2 pureXML 数据库获得 XML 文档(JSONx 格式):

清单 2. 客户 Kathy Smith 的 JSONx 格式的信息
<json:object xmlns:json="http://www.ibm.com/xmlns/prod/2009/jsonx">
  <json:object name="customerinfo">
	<json:number name="cid">1000</json:number>
	<json:string name="name">Kathy Smith</json:string>
	<json:object name="addr">
	  <json:string name="country">Canada</json:string>
	  <json:string name="street">5 Rosewood</json:string>
	  <json:string name="city">Toronto</json:string>
	  <json:string name="prov-state">Ontario</json:string>
	  <json:string name="pcode-zip">M6W 1E6</json:string>
	</json:object>
	<json:object name="phone">
	  <json:string name="work">416-555-1358</json:string>
	</json:object>
  </json:object>
</json:object>

另外,这个页面还提供其他服务,比如插入、更新、删除和 XML 查询。请阅读测试页面的说明了解更多信息。


结束语

本文介绍了 JSON Universal Services,包括在基于 DB2 样例数据库的 JSONx 储存上配置、部署和测试 JSON Universal Services。

本系列的第一篇文章主要关注新的 JSONx 格式,它支持将 JSON 作为 XML 储存在 DB2 pureXML 数据库中。此外,还讨论了 JSON 的用例,并概述了使用 pureXML 储存 JSON 的优点。

本系列的下一篇文章将关注使用 Open-Social Gadgets 创建表示层,Open-Social Gadgets 依赖 JSON Universal Services 作为后台。


下载

描述名字大小
JSON Universal Services 包JSONUniversal Services.zip3692KB

参考资料

学习

获得产品和技术

讨论

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=XML, Information Management, SOA and web services
ArticleID=456150
ArticleTitle=构建 pureXML 和 JSON 应用程序,第 2 部分: 为公开 JSON 的 pureXML 创建 Universal Services
publish-date=12142009