WEB开发网
开发学院网页设计JavaScript 构建 pureXML 和 JSON 应用程序,第 2 部分: 为公... 阅读

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

 2009-12-16 00:00:00 来源:WEB开发网   
核心提示:简介本文是共包含 3 部分的系列文章的第二部分,该系列介绍如何构建一个使用 JavaScript 或 OpenSocial 小部件的三层应用程序,构建 pureXML 和 JSON 应用程序,第 2 部分: 为公开 JSON 的 pureXML 创建 Universal Services,通过遵循本文的步骤,您将通过

简介

本文是共包含 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 下载包的内容
构建 pureXML 和 JSON 应用程序,第 2 部分: 为公开 JSON 的 pureXML 创建 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
构建 pureXML 和 JSON 应用程序,第 2 部分: 为公开 JSON 的 pureXML 创建 Universal Services

查看原图(大图)

使用恰当的参数修改 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 测试页面
构建 pureXML 和 JSON 应用程序,第 2 部分: 为公开 JSON 的 pureXML 创建 Universal Services

查看原图(大图)

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


图 4. 调用 Web 服务操作 getPrimaryKeys 之后的响应
构建 pureXML 和 JSON 应用程序,第 2 部分: 为公开 JSON 的 pureXML 创建 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 作为后台。

本文源代码下载地址: http://flashview.ddvip.com/2009_12/JSONUniversalServices.zip

编缉推荐阅读以下文章

  • 构建 pureXML 和 JSON 应用程序,第 1 部分: 使用 DB2 pureXML 储存和查询 JSON

Tags:构建 pureXML JSON

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