UDDI 注册中心 V3 实体键
UDDI V3 规范扩展了键的可用空间。实体键可以是任何遵循建议 UDDI 方案的通用资源标识 (URI)。根据注册中心策略的不同,UDDI 注册中心和实体发布者都可以指定键。
实体键是一些标识,用来在 UDDI 注册中心中对实体进行寻址。每个 businessEntity、businessService、bindingTemplate 或 tModel 实体都具有唯一标识,此标识是在 UDDI 注册中心中第一次发布该实体时生成或指定的。在特定的注册中心中,键必须唯一。对于 UDDI V1 和 V2 而言,空间仅限于通用唯一标识 (UUID)。对于 UDDI V3 而言,实体键可以是任何遵循建议 UDDI 方案的 URI。
对于 UDDI V3 而言,根据注册中心策略不同,不仅 UDDI 注册中心可以指定键,实体发布者也可以指定键。正是由于存在这些差别,因此产生了需要保持键的唯一性和管理键空间这些问题。
UDDI 方案
UDDI 注册中心 V3 实现了 UDDI V3 规范 4.4 节中详细描述的 UDDI 建议方案。(http://uddi.org/pubs/uddi_v3.htm)。此方案定义了键的格式、有效字符和键空间概念。
在 UDDI V3 注册中心中,键可以是任何 URI,但是长度不能超过 255 个字符。下图显示了 UDDI 键方案中不同类型的键:

- uuidKey 键包含两个标记,即必需的 uddi 以及 <UUID>。这些键通过 UUID 算法来确保唯一性。
- domainKey 键包含两个标记,即必需的 uddi 以及域名。这些键用于创建附加的互斥键空间。
- derivedKey 键是组合键,它基于一个子键(任何 uddiKey)和附加的标记 kss(特定于键的字符串,用于对键进行区分)。kss 令牌可以由发布者指定,也可以通过算法计算 (UUID)。
键唯一性和注册中心根键空间
您可以将 UDDI 注册中心的实例配置为根注册中心或附属注册中心。
根注册中心通过定义它们自己的根键生成器来定义它们自己的根键空间。此操作将定义该注册中心所管理的整个键空间。注册中心生成的所有键都在此键空间中。在策略允许的时候,发布者可以通过发布格式为 <rootkeygenerator>:<subdivisionIdentifier>:keygenerator 的新键生成器 tModel 实体来请求对此键空间进行划分。然后,发布者可以在后续发布请求中包括由发布者提供的键,这些键位于分配给它们的键空间子部分 (<rootkeygenerator>:<subdivisionIdentifier>:<kss>) 中。
为了避免键发生冲突,附属注册中心必须通过以下方法建立自己的根键生成器:首先向它们要附属于的根注册中心提交 tModel:keygenerator 请求,然后使用根注册中心键空间的此子部分作为自己的根键生成器。此过程将确保附属注册中心所生成或接受的键不会与根注册中心键空间中的其他键发生冲突。
为了保持键的唯一性,应用了一些简单规则。注册中心仅在由它自己的根键生成器定义的键空间中生成新键。对于由发布者提供的键,注册中心只接受那些在发布者所拥有键空间子部分(即,作为先前成功的 tModel tModel:keygenerator 发布请求的结果)中的键。
专用根注册中心的简单示例:
with a Root keygenerator:
uddi:aPrivateRegistryKeySpaceIdentifier:keygenerator
generates Entity Keys of format:
uddi:aPrivateRegistryKeySpaceIdentifier:<uuid>
depending on Policy, accepts tModel:keygenerator requests from Publishers for
‘top-level' subdivisions of format:
uddi:aPrivateRegistryKeySpaceIdentifier:aPublisherSubdivisionIdentifier:
keygenerator
对键空间的子部分发布 tModel:keygenerator 请求
根据策略不同,发布者可以对根注册中心键空间的顶层子部分提交请求以供自己使用。策略可以指定注册中心是否支持发布者提供的键以及特定发布者的用户权限是否允许该发布者对键空间提交请求。
除了对根注册中心键空间的顶层子部分提交请求以外,发布者还可以创建其他键空间子部分。
uddi:aPrivateRegistryKeySpaceIdentifier:aPublisherSubdivisionIdentifier:
a:keygenerator
要成功请求更进一步的子部分,请求并且拥有先前子部分的 tModel 实体的发布者必须发出该请求。在上一示例中,此发布者是 uddi:aPrivateRegistryKeySpaceIdentifier:aPublisherSubdivisionIdentifier:keygenerator。
使用发布者提供的键进行发布
在发布者成功地请求使用根注册中心键空间中的某个子部分之后,该发布者必须确定并维护自己的方案,以确保生成的键(在后续发布请求中用作由发布者提供的键)在该子部分中唯一。
有效方案所生成的键在所分配的键空间子部分中是唯一的派生键,例如,通过包括唯一的(递增)数字下标来确保唯一。
uddi:aPrivateRegistryKeySpaceIdentifier:aPublisherSubdivisionIdentifier:
a:keygenerator
valid keys are:
uddi:aPrivateRegistryKeySpaceIdentifier:aPublisherSubdivisionIdentifier:a:1
uddi:aPrivateRegistryKeySpaceIdentifier:aPublisherSubdivisionIdentifier:a:2