如何使用REST执行查询和创建对象

IBM® ">WebSphere® Service Registry and Repository 实现了一个 XPath 2.0 子集和扩展,以提供一种简单但有效的搜索、查询和创建机制。

XPath 语法可通过 REST 获得,可从包含 SOAP 和 Service Registry 会话 bean 的 API 和 Business Space 中的 Collection 小部件执行。本文将提供一些 XPath 语法示例,展示如何使用 REST 测试 XPath。您还将了解如何使用 REST 创建 WebSphere Service Registry and Repository 对象。XPath 语法和 REST 示例也可用于其他 API,比如 Java、SOAP 和 Business Space 中的 Collection 小部件。

WebSphere Service Registry and Repository 上下文中的 XPath 概述

XPath 是一种导航 XML 文档的查询语言。尽管 WebSphere Service Registry and Repository 中的内容并不总是存储在 XML 文件内,但这些内容是当作 XML 建模的,而且出于本文中的示例的用途,您可以假设 WebSphere Service Registry and Repository 中存储的数据是 XML 格式或类似 XML。

WebSphere Service Registry and Repository 提供了一个加强治理配置文件 (governance enablement profile, GEP),其中包含实现完整的治理流程所需的已建模的对象和生命周期。本文将介绍查询和创建 GEP 中的对象所需的 XPath 语法。如果您已使用 WebSphere Service Registry and Repository Studio 基于 GEP 创建了自定义配置文件,并向其中添加自己的已建模对象,本文会对您也很有帮助。对于本文,不需要使用自定义配置文件,也不需要安装或使用 WebSphere Service Registry and Repository Studio,但是,如果您拥有使用 UML 中的自定义配置文件的经验,那么将会有助于您理解上下文和背景。

本文假设您对 Websphere Service Registry and Repository 和 XPath 概念有一定的了解,而且熟悉 GEP。文中提供了针对 WebSphere Service Registry and Repository V7.5 或 V8.0 GEP 和文档的一些示例。更早的产品版本也支持 XPath 语法,这些示例同样适用于任何 GEP 版本,包括 V6.3 和 V7.0。

理解 XPath 上下文中的对象模型

GEP 提供了一组可供您直接引用的具体类型。有关它们的完整列表,请参阅 Websphere Service Registry and Repository 信息中心中的 具体类型。有关具体类型查询的示例,请参阅针对 XPath 查询的信息中心主题。

具体类型列表中未包含的所有对象都有一个 GenericObject 类型,无论是来自 GEP 的对象,还是引入一个自定义模型中的任何新对象。都可以使用 primaryType 属性来区分 GenericObject 类型的特定的已建模对象。

模型中的每个对象从 GenericObject 隐式继承一组属性,还继承已建模的对象,以及它在继承分层结构中的父对象的属性和关系。对于以下属性,您不会在 WebSphere Service Registry and Repository Studio 的 UML 模型中看到隐式继承的属性:

bsrURI name(强制性) namespace version description owner lastModified creationTimestamp lastModifiedBy primaryType

bsrURI 属性是对象的一种内部惟一标识符,它的值在 WebSphere Service Registry and Repository 中创建对象时自动生成。

primaryType 属性采用 namespace#objectName 的形式。命名空间是在对象模型中定义的,您可以在 WebSphere Service Registry and Repository 中(在包的 Stereotypes 选项卡下)或在磁盘上生成的 OWL 文件中看到它。您还会发现 primaryType 是图表查询响应中的一个参数。

在 WebSphere Service Registry and Repository 中配置 REST 的根 URL

WebSphere Service Registry and Repository 提供了一个 REST 接口,使不支持 EJB 和 Web 服务的轻量型客户端能够通过 HTTP 请求对内容和元数据进行操作。在 XPath 或 XML 的上下文中,WebSphere Service Registry and Repository 元数据由一组名称-值对组成。当执行图表查询时,会返回一个对象的所有名称和值。借助一些 API,您可以在更深的深度上执行图表查询,跟踪与子对象的关系。在 REST 中,只能在单一级别上执行查询。在执行属性查询时,会按照名称请求一个或多个特定属性,而返回的是每个属性的值。

本文中的示例具有两种形式:XPath 语法(如文中所示)和使用一个默认根 URL 包装在一个 REST 中的链接。根 URL 的格式为 http://hostname:port/prefixWSRR/version/。WebSphere Service Registry and Repository 提供了两种类型的附加到根 URL 上的查询:

检索或创建内容 http://hostname:port/prefixWSRR/version/Content/ 检索或创建元数据 http://hostname:port/prefixWSRR/version/Metadata/syntaxtype/querytype?query=

本文中的示例使用了以下值:

hostname localhost port 9080 prefixWSRR WSRR version 7.5 syntaxtype XML 或 JSON querytype GraphQuery 或 PropertyQuery

要在浏览器中使用 REST 语法,则必须编码一些字符,而且本文中的示例已为您进行编码。有关特殊字符的更多信息,请参阅本文底部 “参考资料” 一节中的信息中心链接。

如果启用了安全性,那么 9080 端口会自动重定向到一个具有安全端口(默认端口为 9443)的 https 地址。在首次执行查询时,系统还会提示您进行登录。使用一个具有 WebSphere Service Registry and Repository Web UI 的完整管理员访问权的用户名和密码,比如 wasadmin。

(可选)设置 WebSphere Service Registry and Repository,以便可以使用本文中的链接

如果设置了以下环境,那么您将能够在浏览器中单击本文中的链接,使示例具有交互性:

在您阅读本文的机器上安装 WebSphere Service Registry and Repository V7.5 或 V8.0 服务器。使用以下配置: 默认端口(9080 和 9443)。 如果处于 ND 环境中,那么仅将 WebSphere Service Registry and Repository 部署在一个单元成员上,以便确保使用了默认前缀 (WSRR)。 加载并激活 GEP。 加载 WSDL 并创建业务功能和服务。有关这些任务的说明,请参阅 Websphere Service Registry and Repository 信息中心中的教程 治理现有服务 和 治理新服务。

您现在能够单击本文中的链接,并以对本地 WebSphere Service Registry and Repository 服务器的 REST 查询的形式执行 XPath 语法。

时间: 2014-12-19

如何使用REST执行查询和创建对象的相关文章

报空指针异常,但是我debug到对象是有值的,执行查询方法就报错,错误信息如下:

问题描述 报空指针异常,但是我debug到对象是有值的,执行查询方法就报错,错误信息如下: 5C java.lang.NullPointerException at net.shop.services.manage.account.impl.AccountServiceImpl.selectCount(AccountServiceImpl.java:44) at net.shop.web.action.manage.account.AccountAction.unique(AccountActi

js面向对象学习 - 对象概念及创建对象

一.对象概念 对象是什么?对象是"无序属性的集合,其属性可以包括基本值,对象或者函数".也就是一组名值对的无序集合. 对象的特性(不可直接访问),也就是属性包含两种,数据属性和访问器属性. 1.数据属性又包含     Configurable //表示能否通过delete删除,默认为true:     Enumerable //表示能否通过for-in循环返回属性,默认为true;     Writable   //表示能否修改属性的值,默认为true;     Value      

javaScript创建对象

一.对象 ECMA-262把对象定义为:无序属性的集合,其属性可以包含基本值,对象或者函数.所以js中对象就是一组键值对. 面向对象的语言中,都是通过类的来创建任意多个具有相同属性和方法的对象实例的.但是js中没有类的概念,接下来我先通过一个例子来阐述js中没有 "类"的概念蕴含的哲学.这点会让初学者很困惑,但是也正因为放下了"类"的概念,js对象才有了其他编程语言没有的活力.事实上js中对象的"类"是从 无到有,又不断演化,最终消失于无形之中.

javascript创建对象(二)

原型模式:每创建一个函数都有一个prototype属性,它是一个指针,指向一个对象: 原型模式创建函数的方式: function Movie(){ }; Movie.prototype.name="Interstellar"; Movie.prototype.year=2014; Movie.prototype.country="American"; Movie.prototype.playMovie=function(){    alert(this.name);

javascript创建对象之工厂模式(一)

工厂模式在软件工程里面是一种比较常见的设计模式了.这种模式抽象了创建具体对象的过程. 上代码: function createHuman(name,sex) {             var obj = new Object();             obj.name = name;             obj.sex = sex;             obj.say = function () {                 alert(this.name);        

javascript创建对象之构造函数模式(二)

对上一章节的工厂模式进行代码重写 function Human(name, sex) {             this.name = name;             this.sex = sex;             this.say = function () {                 alert(this.name);             }         }         var man = new Human("汉武大帝", "男&quo

javascript创建对象之原型模式(三)

先上代码: function Human() { }         Human.prototype.name = "成吉思汗";         Human.prototype.sex = "男";         Human.prototype.say = function () {             alert(this.name);         }         var man = new Human();         man.say();

javascript创建对象之动态原型模式(五)

动态原型模式是将所有的信息都封装到工造函数中,而构造函数中初始化原型,有保持了同时在使用构造函数和原型的优点. function Human(name, sex) {             this.name = name;             this.sex = sex;             if (typeof this.say != "function") {                 Human.prototype.say = function () {   

automation服务器不能创建对象

创建|对象|服务器 [现象]准备新建一个项目,却发生一件奇怪的事情,系统报告"automation服务器不能创建对象"错误.然后在解决方案中只见项目名,而不见项目文件了.真是奇怪.再尝试打开已有项目,却一切正常.windows应用程序,控制台,或是Web应用程序,都无法建立. [解决方法] 只需要运行:regsvr32 scrrun.dll 就可以了.