使用 XPath 和 REST 在 WebSphere Service Registry and Repository 中查询和创建对象

一些 Websphere Service Registry and Repository API 使用 XPath 构建查询。本文将介绍如何使用该语法在您的应用程序中构建查询,以及如何使用 REST 执行查询和创建对象。

Sarah Eggleston, IBM Software Services for WebSphere 顾问, IBM

Sarah Eggleston 是位于英国 Hursley 的 IBM 软件开发实验室的 IBM Software Services for WebSphere 团队的一名顾问。她拥有 Java 开发、WebSphere Application Server 和 WebSphere Service Registry and Repository 背景。



2013 年 4 月 16 日

简介

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
XMLJSON
querytype
GraphQueryPropertyQuery

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

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

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

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

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

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

XPath 示例

检索元数据

图表查询会检索一个对象的所有元数据以及与其直接子对象有关的链接关系。使用 WebUI 或 Business Space 在 WebSphere Service Registry and Repository 中创建的一个对象完全由元数据组成。如果已经加载了数据(例如一个 WSDL 文件或文档),则需要执行一个内容查询来检索内容。

示例 1:对所有具有服务版本类型的对象的图表查询

此示例检索具有服务版本类型的对象的图表。在 GEP 中,需要创建一个服务版本来表示每个概念服务,并添加从它到一个或多个 WSDL 服务的关系。服务版本具有一般对象的格式,其主要类型为 http://www.ibm.com/xmlns/prod/serviceregistry/profile/v6r3/GovernanceEnablementModel#ServiceVersion

/WSRR/GenericObject[@primaryType='http://www.ibm.com/xmlns/prod/serviceregistry/profile/v6r3/GovernanceEnablementModel#ServiceVersion']

示例 2:对具有服务类型的特定命名对象的图表查询

在加载一个 WSDL 文件时,WebSphere Service Registry and Repository 会自动创建一个服务,内容会从 WSDL 文件中的 <wsdl:service> 标记的内容得出。如果已经完成 GEP 教程,那么已经加载了 AccountCreationDevelopmentEndpoint.wsdl,其中包含一个名为 AccountCreationService-Development 的服务,本示例中使用的就是这个服务。以下是给定一个特定服务的名称,查询与它相关的所有元数据的语法:

/WSRR/GenericObject[@primaryType='http://www.ibm.com/xmlns/prod/serviceregistry/v6r3/ServiceModel#Service' and @name='AccountCreationService-Development']

如果您已完成 GEP 教程并加载了 AccountCreationDevelopmentEndpoint.wsdl,那么示例 2 中的 XML 图表查询的响应将类似于:

Graph query response

示例 3:对 WSDL 文档的 name 和 bsrURI 的属性查询

属性查询从一个对象检索一个或多个特定的属性,您可在查询中识别这些属性。当查询具体类型(比如 WSDL 文档)时,不会设置主要类型。如果已完成 GEP 教程,那么将加载多个 WSDL 文档。

/WSRR/WSDLDocument&p1=name&p2=bsrURI

内容步包含 WSDL 文件的正文。如果希望查看文件内容,那么可以使用一个内容查询,下面提供了一些示例:

示例 4:使用 JSON 对特定 WSDL 文档的 bsrURI 的属性进行查询

现在您已经使用一个图表查询找到了您系统中的 WSDL 文档的名称,那么可以将此信息包含在一个查询中,以便查找特定的文档 bsrURI。如果已完成 GEP 教程,那么您已经加载了 EligibilityService.wsdl。此查询的 REST 版本使用 JSON 代替 XML。结果的格式有所不同,但内容是一样的:

/WSRR/WSDLDocument[@name='EligibilityService.wsdl']&p1=bsrURI

检索内容

对于拥有内容的对象,比如 WSDL 文档,可以使用 bsrURI 来检索内容。您首先需要识别 bsrURI,这可以使用示例 4 中的查询完成。内容查询的格式为 /WSRR/7.5/Content/bsrURI_value

示例 5:对一个特定 WSDL 文档的内容查询

对象的 bsrURI 值是惟一的,所以此示例不是交互式的:

http://localhost:9080/WSRR/7.5/Content/074ac307-f834-4424.bb54.d0b3c8d054d2

您还可以使用参数来检索内容:

http://localhost:9080/WSRR/7.5/Content?query=/WSRR/WSDLDocument[@name=%27AccountCreationProductionService.wsdl%27]

如果内容查询有多个匹配结果,那么您将收到第一个匹配结果,除非使用 errorOnMultiple 参数。

在检索内容时,响应是一个文件。在使用 REST 时,您的浏览器会提示您保存或打开它。

导航一个图表中的关系

XPath 使用对象关系来导航一个对象或一组对象的子对象。如果执行了示例 1 或示例 2,您会看到一个 ServiceVersion 包含与一个名为 ale63_owningOrganization 的组织有关的一种关系。

示例 6:查询组织关系

此示例展示查找一个或多个服务版本引用的所有组织的图表查询,这些组织 同于 WebSphere Service Registry and Repository 中配置的所有组织的列表。如果已完成 GEP 教程,那么您已创建了三个组织(JKHL Enterprises、Common services 和 Commercial),但此查询仅返回服务版本引用的两个组织(Common services 和 Commercial):

/WSRR/GenericObject[@primaryType='http://www.ibm.com/xmlns/prod/serviceregistry/profile/v6r3/GovernanceEnablementModel#ServiceVersion']/ale63_owningOrganization(.)

示例 7:查询一个组织与一个限定的服务版本的关系

您可以使用属性来约束一种关系查询。这个示例查找 Eligibility 服务引用的所有组织,您会找到您创建的三个组织中的一个:

/WSRR/GenericObject[@primaryType='http://www.ibm.com/xmlns/prod/serviceregistry/profile/v6r3/GovernanceEnablementModel#ServiceVersion' and @name='Eligibility service'] /ale63_owningOrganization(.)

示例 8:查询具有来自一个组织的父关系的服务版本

关系功能非常强大:除了使用关系来导航,还可将它们视为搜索条件。此示例将查找在 Commercial 组织中拥有所有者的所有服务版本:

/WSRR/GenericObject[@primaryType='http://www.ibm.com/xmlns/prod/serviceregistry/profile/v6r3/GovernanceEnablementModel#ServiceVersion' and ale63_owningOrganization(.)/@name='Commercial']

使用正则表达式进行搜索

示例 9:使用文本匹配进行查询

您可以使用正则表达式创建对特定属性或任何属性的内容的文本匹配搜索。可使用 @* 将文本与任何建模的属性匹配,使用 “i” 来使用不区分大小写的搜索。但是,使用通配符搜索会产生一定的性能影响,所以请尝试让搜索尽可能准确。此示例查找您为 Account Creation 和 Eligibility 加载并使用包含 jkhle 的命名空间标识的所有 WSDL 服务:

/WSRR/GenericObject[@primaryType='http://www.ibm.com/xmlns/prod/serviceregistry/v6r3/ServiceModel#Service' and matches(@namespace, '.*jkhle.*')]

存在和不存在搜索

示例 10:查询一个关系是否存在

示例 8 展示了如何搜索其拥有组织为 Commercial 的搜索版本。您还可以查找具有任何名称的关系是否存在。

查询 /WSRR/GenericObject[ale63_owningOrganization(.)] 将查找所有具有关系属性 ale63_owningOrganization 的已建模对象。但是,无论 ale63_owningOrganization 属性是否引用了某个组织,它都会返回这些对象。如果原封不动地使用 GEP,那么它将返回具有资产类型或继承自一个资产的所有对象。这将是一个很长的列表,潜在的类型将包含 Business Capability、Capability Version、Schema Specification 和 DOU。

如果附加 name 属性,则会使查询更加具体,这将确保仅检索设置了 ale63_owningOrganization 值的条目。和平常一样,您还可以按照主要类型或名称进行过滤,如果知道了您在查找的具体的已建模对象或类型,则应该执行此过滤。该示例显示了拥有一个所有组织的所有服务版本:

/WSRR/GenericObject[@primaryType='http://www.ibm.com/xmlns/prod/serviceregistry/profile/v6r3/GovernanceEnablementModel%23ServiceVersion' and ale63_owningOrganization(.)/@name]

示例 11:查询某个属性是否不存在

您可以使用 null 测试还未设置的文本属性,但日期或日历属性不支持 null。该示例显示了没有设置用户标识符的所有服务版本。在 GEP 教程数据中,它将找到 Eligibility 服务版本,但不会找到 Account Creation service 版本:

/WSRR/GenericObject[@primaryType=%27http://www.ibm.com/xmlns/prod/serviceregistry/profile/v6r3/GovernanceEnablementModel%23ServiceVersion' and @gep63_consumerIdentifier=null]

Poster Firefox Extension

当在浏览器中使用 REST 时,只能检索或查询内容和元数据。您可以在 WebSphere Service Registry and Repository 中使用 Java、REST、SOAP 或 Atom API 创建、更新或删除对象,但需要开发一个应用程序客户端或一个具有发布能力的工具,比如 cURL 或 Poster Firefox Extension。这一节将介绍如何使用 Poster Firefox Extension,使用 REST 创建对象。Poster Firefox Extension 可通过一个 BSD 许可获得。

这些示例使用 V10 及更高的多个 Firefox 版本,使用 Windows 7(64 位)上的 Poster V3.1.0 进行了测试。必须安装 Firefox,然后才能安装 Poster Firefox Extension。如果有任何问题,请参阅 Poster Firefox Extension 网站 并单击 Issues 选项卡。

安装和配置 Poster

  1. 转到 Poster Firefox Extension 安装页面
  2. 在提示时重新启动 Firefox。
  3. Poster Extension 提示将以 “P” 图标的形式显示在右下角。单击它来启动 Poster: Poster 图标

验证 Poster WebSphere Service Registry and Repository 配置

  1. http(s)://[host]:[port]/WSRR/ 格式输入一个目标 URL,比如 http://localhost:80/WSRR/
  2. 如果系统提示您输入您的 WebSphere Service Registry and Repository 用户名和密码,请输入它们并单击 GET: Poster
  3. 如果配置正确,则会打开一个新窗口,其中显示了有关您的 WebSphere Service Registry and Repository 服务器的信息。在本示例中,WebSphere Service Registry and Repository 服务器是 V7.5,且应用了 Fix Pack 2: WebSphere Service Registry and Repository 版本结果

在 WebSphere Service Registry and Repository 中创建对象

使用 Poster 在 WebSphere Service Registry and Repository 中创建一个通用对象

  1. 在 WebSphere Service Registry and Repository 中创建一个通用对象所需的最简单语法是目标 URL、对象类型和对象名称:http://localhost:9080/WSRR/7.5/Content/GenericObject?name=Posted
  2. 单击 POST:
    在 WebSphere Service Registry and Repository 中创建一个通用对象在 WebSphere Service Registry and Repository 中创建一个通用对象后的响应

使用 Poster 和参数在 WebSphere Service Registry and Repository 中创建对象

示例 12:使用空关系进行创建

  1. 输入目标 URL 和对象类型:http://localhost:9080/WSRR/7.5/Content/GenericObject
  2. 在内容窗格中输入参数:
    <resources>
      <resource>
        <properties>
           <property name="name" value="Finance"/>
             <property name="primaryType" 
    value="http://www.ibm.com/xmlns/prod/serviceregistry/v6r3/ALEModel#Organization"/>
             <property name="ale63_contactEmail" value=""/>
             <property name="ale63_contact" value=""/>
           </properties>
           <relationships>
             <relationship name="ale63_childOrganizations"/>
           </relationships>
        </resource>
    </resources>
  3. 单击 POST:
    在 WebSphere Service Registry and Repository 中创建一个组织
  4. 成功的响应包含新对象的 bsrURI。例如:
    <properties>
        <property name="bsrURI" value="4ca23f4c-e3fc-4c96.b6ac.ec4676ecac0d"/>
    </properties>

示例 13:使用关系目标进行创建

本示例使用 Finance 组织的 bsrURI 设置了新 IBM 组织的一个子组织。它假设您已经创建了 IBM 组织,且知道它的 bsrURI:

  1. 输入目标 URL 和对象类型:http://localhost:9080/WSRR/7.5/Content/GenericObject
  2. 在内容窗格中输入参数:
    <resources>
        <resource>
            <properties>
                <property name="name" value="IBM"/>
                <property name="primaryType" 
    value="http://www.ibm.com/xmlns/prod/serviceregistry/v6r3/ALEModel#Organization"/>
                <property name="ale63_contactEmail" value=""/>
                <property name="ale63_contact" value=""/>
            </properties>
            <relationships>
                <relationship name="ale63_childOrganizations" 
    targetBsrURI="73e70273-ebb6-46fe.a7d4.6a6f796ad408"/>
            </relationships>
        </resource>
    </resources>
  3. 单击 POST。

示例 14:使用图表查询进行验证

提示和技巧

  • API 是向后兼容的,而不是向前兼容。例如,WebSphere Service Registry and Repository V8 不支持 V7.5 和更低的 API 版本。
  • 在 XPath 中,对属性使用 @ 前缀,对关系使用 (.) 后缀。
  • 当对一些 API 执行图表查询时,可执行深度查询。例如,WebSphere DataPower 使用此功能检索 WSDL 和它们的相关仲裁策略。但是,REST 不允许使用深度响应,所以您在浏览器中的结果看到的内容比从一些 API 看到的内容少一些。
  • 在 Poster 中,可在内容字段中使用 %23 或 # 符号,但必须在 URL 字段中使用 %23。
  • 您可以使用 cURL 工具执行这些示例中的命令,而不使用浏览器或 Poster Firefox Extension。
  • 如果创建启用了安全性的对象,那么可以使用安全 URL 和端口(默认为 9443)。当执行查询或检索内容时,不安全的端口(默认为 9080)会自动重定向到安全端口 (9443),除非您在 WebSphere Application Server 中禁用了不安全的端口。
  • 如果执行同一个 POST 两次,那么默认情况下您会在 WebSphere Service Registry and Repository 中得到两个相同的对象,但它们具有不同的 bsrURI。您可以开发一个自定义插件来避免重复。
  • REST API 提供了可能具有破坏性的命令访问能力,所以请确保只有具有合适的访问特权的用户拥有 WebSphere Service Registry and Repository 中的创建、更新和删除授权。
  • WebSphere Service Registry and Repository XPath 语法是区分大小写的。

错误处理和诊断

创建内容时的错误参数

当您尝试创建一个对象但未包含所有必要属性和关系时,以下就是您会看到的一些错误的示例。

错误示例 1:创建具有不完整的属性的组织

在创建一个新对象时,必须提供强制性属性。例如,如果使用 POST 创建一个对象,并在 Poster Firefox Extension 中提供此 URL:

https://localhost:9443/WSRR/7.5/Content/GenericObject?primaryType=
http://www.ibm.com/xmlns/prod/serviceregistry/v6r3/ALEModel#Organization

响应将会包含以下错误:

GSR1354E:  The property "name" has not been specified in the URL

错误示例 2:创建具有不完整关系的组织

在创建一个新对象时,必须提供关系名称,即使内容是可选的。例如,如果使用 POST 创建一个对象,并在 Poster Firefox Extension 中提供此 URL:

https://localhost:9443/WSRR/7.5/Content/GenericObject?name=posted&primaryType=
http://www.ibm.com/xmlns/prod/serviceregistry/v6r3/ALEModel#Organization

响应将会包含以下错误:

GSR0018E: Object "posted" is missing the required business model property 
"ale63_childOrganizations" of type 
"http://www.ibm.com/xmlns/prod/serviceregistry/v6r3/ALEModel#Organization"

ale63_childOrganizations 关系是可选的,这意味着内容是可选的,但您在创建该组织时仍然必须指定关系名称。

检索时未找到结果

对于元数据查询,如果没有找到与查询匹配的对象,结果将会是一个空 <resources> 标记。

对于具有参数的内容查询,如果没有找到匹配结果,您会看到一个服务器 404(页面未找到)错误。

对于内容查询,如果未找到匹配的 bsrURI,您会看到以下错误:

<error>
  <code>GSR0038E</code>
  <message>GSR0084E: An error occurred while attempting to lookup item 
  "8b22b18b-4fd0-4007.88a5.3a5d743aa511" in the registry.</message>
  <causemessage>GSR0597E: An error occurred when accessing the metadata 
  store.</causemessage>
  <stacktrace>com.ibm.serviceregistry.ServiceRegistryItemLookupException: 
  GSR0084E: An error occurred while attempting to lookup item 
  "8b22b18b-4fd0-4007.88a5.3a5d743aa511" in the registry.
    com.ibm.sr.athene.access.impl.AtheneAccessImpl.loadObjectByPattern
      (AtheneAccessImpl.java:1540)
    com.ibm.sr.athene.access.impl.AtheneAccessImpl.getItemByID
      (AtheneAccessImpl.java:399)
    com.ibm.sr.athene.persistence.impl.DocumentAccessor.retrieve
      (DocumentAccessor.java:109)
    ...

未编码的字符

必须在查询中正确编码字符。例如,如果在浏览器中或 Poster Firefox Extension 中为此 URL 使用一个未编码的 # 字符: /WSRR/GenericObject[@primaryType=%27http://www.ibm.com/xmlns/prod/serviceregistry/profile/v6r3/GovernanceEnablementModel#ServiceVersion%27],那么响应将包含如下错误。请注意,查询在 GovernanceEnablementModel 后被截断,这暗示着下一个字符 (#) 是一个错误字符:

<error>
<code>GSR1350E</code>
<message>GSR0089E: An error occurred while dealing with the following query: 
"/WSRR/GenericObject[@primaryType='http://www.ibm.com/xmlns/prod/
serviceregistry/profile/v6r3/GovernanceEnablementModel"
</message>
<causemessage>GSR4500E: Error parsing query: /WSRR/GenericObject
[@primaryType='http://www.ibm.com/xmlns/prod/serviceregistry/profile
/v6r3/GovernanceEnablementModel
</causemessage>
<stacktrace>com.ibm.serviceregistry.ServiceRegistryQueryException: 
GSR0089E: An error occurred while dealing with the following query: 
"/WSRR/GenericObject[@primaryType='http://www.ibm.com/xmlns/prod/
serviceregistry/profile/v6r3/GovernanceEnablementModel"
com.ibm.sr.xpath.athene_triplequery.Renderer.parse
  (Renderer.java:180)
com.ibm.sr.xpath.athene_triplequery.Renderer.transformGraphQuery
  (Renderer.java:120)
com.ibm.sr.athene.persistence.impl.QueryManagerImpl.query
  (QueryManagerImpl.java:145)
...

端口和安全

必须对端口使用正确的 HTTP 类型。例如,如果使用 REST 查询 https://localhost:9080/WSRR/7.5/Metadata/XML/GraphQuery?query=/WSRR/WSDLOperation,那么响应将包含以下错误:

An error occurred during a connection to localhost:9080.
SSL received a record that exceeded the maximum permissible length.
Error code: ssl_error_rx_record_too_long)

反向错误也将失败。例如,如果使用 REST 查询 http://localhost:9443/WSRR/7.5/Metadata/XML/GraphQuery?query=/WSRR/WSDLOperation,那么响应将包含一个服务器连接错误,准确的消息取决于您使用何种浏览器。

结束语

本文介绍了如何编写适用于 WSRR 的 XPath 查询,并使用 REST 测试它们。如果有一个具有默认配置的本地 WSRR 安装,那么您将能够直接使用浏览器测试示例查询。我们还学习了如何使用 Poster Firefox Extension 在 WSRR 中创建元数据,并查看了不正确地配置查询的示例,以及所导致的错误。

致谢

感谢 Anna Maciejkowicz(服务专家,WSRR 3 级服务团队)和 Phil Rowley(软件开发人员,WSRR 开发团队)帮助审阅本文。

参考资料

学习

讨论

条评论

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=WebSphere, Open source
ArticleID=870523
ArticleTitle=使用 XPath 和 REST 在 WebSphere Service Registry and Repository 中查询和创建对象
publish-date=04162013